mutableStateListOf 在用 targetsdk 33 和 kotlin 1.7.20 替换列表中的某些元素时没有进行重组

问题描述 投票:0回答:0

仅当您更改列表本身时才会发生重组。 mutableStateListOf 只能通知添加、删除或替换列表中的某些元素。

参考:Android Jetpack Compose mutableStateListOf not doing Recomposition

基于前面的假设,重组应该在下面代码中的 like() 方法调用上触发,并且它之前发生过。但是由于我在我的代码中更新了版本,重组不会在 like() 方法调用上触发。

我在我的项目中使用以下版本和我更新的一些其他库版本:-

val compilesdk = 33
val minsdk = 21
val targetsdk = 33
val kotlin = "1.7.20"
val compose_compiler = "1.4.0"
val compose_ui = "1.3.3"
val compose_runtime = "1.3.3"
val compose_foundation = "1.3.1"
val compose_material = "1.3.1"

视图模型

val recipes = mutableStateListOf<Recipe>()

fun like(index: Int, likes: ArrayList<String>) {
    recipes[index] = recipes[index].copy(likes = likes)
}

可组合物

SocialNetworkContent(
      viewModel.recipes,...
)

@Composable
fun SocialNetworkContent(
    recipes: List<Recipe>,
    ...
){
..
items(
                count = recipes.size,
                itemContent = {
                    SocialListItem(
                        recipe = recipes[it],
                        it,
                        sharedPreferences,
                        viewModel,
                        onNavigateToRecipeDetailScreen,
                        onNavigateToUserProfileScreen
                    )
                },
            )
..
}
android kotlin android-jetpack-compose android-jetpack mutablestateof
© www.soinside.com 2019 - 2024. All rights reserved.