提问人:Tornseglare 提问时间:10/25/2023 更新时间:10/25/2023 访问量:42
当全局值更改时,如何使 kotlin 可组合更新
How do I make kotlin composable update when a global value changes
问:
我正在学习 Kotlin 和 Composables 的基础知识。我的用例非常简单,我有一个全局变量:
var globalValue : Int = 1
然后我有了这个可组合文件:
@Composable
fun SomeView(modifier: Modifier = Modifier) {
...some Text() printing globalValue
当我更改 的值时,我希望调用 SomeView()。globalValue
我已经尝试过将 as 参数用于可组合项,但我似乎错过了重点,没有任何更新。by remember
globalValue
任何帮助都是值得赞赏的!
答:
1赞
Mohammad Fallah
10/25/2023
#1
当变量的值发生变化时,您应该使用来更新可组合项,因此您可以简单地使用如下所示:State
mutableStateOf
val globalValue = mutableStateOf(1)
因此,您需要使用 property 读取和写入此状态,例如,要将此变量设置为 10,您可以编写以下内容:value
globalValue.value = 10
如果要在不调用的情况下使用 globalVariable,则只需使用 key 对属性使用 delegation。.value
by
var globalValue by mutableStateOf(1)
现在,您可以将该变量设置为普通变量。Int
评论
0赞
Tenfour04
10/25/2023
除非您将 State 用作代表,否则我不会将其与 State 结合使用。var
0赞
Mohammad Fallah
10/25/2023
@Tenfour04对不起,我不明白你的意思。如果你需要使用 pure,你可以使用关键字进行委托,然后只需使用你的 globalVariable 作为变量Integer
by
Integer
2赞
Tenfour04
10/25/2023
我是说 State 属性应该是只读的,因为永远没有理由将其更改为不同的 State 实例。
0赞
Mohammad Fallah
10/25/2023
@Tenfour04 哦,是的,这是一个错误。谢谢。我编辑了它。
0赞
Tornseglare
10/25/2023
谢谢你,无数的穆罕默德!正如我所怀疑的那样,这对我来说太简单了,我无法理解。:-D我的错误是认为带有 mutableStateOf(1) 的行必须驻留在可组合函数内部,所以我无法理解如何让它“外部”,即全局。
评论