仅当您更改列表本身时才会发生重组。 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
)
},
)
..
}