android Jetpack组成:记住返回“错误”值

ehxuflar  于 2023-02-17  发布在  Android
关注(0)|答案(1)|浏览(94)

我被一个写作问题卡住了。
我不明白为什么remember { mutableStateOf() }返回错误的值。
例如:

val subscribedState: State<Boolean> = remember { mutableStateOf(data.isSubscribed) }

调试时,data.isSubscribed的计算结果为true,但subscribedState的计算结果为false
原因何在?

8qgya5xd

8qgya5xd1#

由remember计算的值在初始合成期间存储在Composition中,存储的值在重新合成期间返回。
这意味着,当函数进行初始合成时,即使data.isSubscribed已更改,subscribedState也将保留data.isSubscribed的第一个值
我想data.isSubscribed已经是你的状态了。
此外,您可以通过传递任何参数来更新remember内部的状态。
示例:

val subscribedState: State<Boolean> = remember(data.isSubscribed) { mutableStateOf(data.isSubscribed) }

但更优雅(我猜data.isSubscribed已经是您的状态):

val subscribedState = data.isSubscribed

相关问题