相关疑难解决方法(0)

为什么更新 PreferenceManager 不会触发 Jetpack Compose 中的重组?

我正在通过文章学习 Compose 。

无状态可组合项是不保留任何状态的可组合项。实现无状态的一个简单方法是使用状态提升,所以我用代码 A 替换代码 B,这太棒了!

文章告诉我:

通过将状态从 HelloContent 中提升出来,可以更轻松地推理可组合项、在不同情况下重用它并进行测试。HelloContent 与其状态的存储方式分离。解耦意味着如果修改或替换HelloScreen,则不必更改HelloContent的实现方式。

name所以我写了Code C,它存储了a中的值SharedPreferences,我认为Code C就像Code A一样,但实际上,我无法用Code C输入任何字母,Code C有什么问题吗?

代码A

@Composable
fun HelloScreen() {
    var name by rememberSaveable { mutableStateOf("") }
    HelloContent(name = name, onNameChange = { name = it })
}

@Composable
fun HelloContent(name: String, onNameChange: (String) -> Unit) {
    Column(modifier = Modifier.padding(16.dp)) {
        Text(
            text = "Hello, $name",
            modifier = Modifier.padding(bottom = 8.dp),
            style = MaterialTheme.typography.h5
        )
        OutlinedTextField(
            value = name,
            onValueChange = onNameChange, …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack-compose

3
推荐指数
1
解决办法
2244
查看次数

标签 统计

android ×1

android-jetpack-compose ×1