我试图在compose中更新(添加或删除主题)mutableStateList(),但数据没有更新,
我想要的是我想基于那个主题,我想做我的API调用。
让我给你看看我做了什么
val searchedTopicList = remember {
mutableStateListOf<String>()
}
Log.i("Topics", "DashboardPersonalScreen: $searchedTopicList")
LaunchedEffect(searchedTopicList) {
newsViewModel.getNewsFromTopics(searchedTopicList)
}
Button(onClick ={
searchedTopicList.add("cars")
}){
Text("Add Topic")
}
当我点击按钮的数据不更新,这是原因,以API不调用。
如果我说错了请纠正我
2条答案
按热度按时间8tntrjer1#
最后我发现我犯了一个错误
我把代码从
到
因此,每当
searchedTopicList
大小更改时,LaunchedEffect
就会再次触发并调用Make API。对于
log
,我添加了size
,然后日志显示如果有人想参加一些光对它那么这将是一个伟大的
pgpifvop2#
如果你需要在不改变列表大小的情况下处理改变列表的操作,你的答案就不起作用了。
因为compose只观察列表的
size
而不是list
的变化。您的代码需要从
一个在上面,一个在下面。
snapShotFlow
创建readObserver,它收集主体内部观察到的状态变化,并将其作为Flow
发出。searchedTopicList.toList()
实际上是从StateRecord
阅读状态。从collectLastest
收集的每个事件都会取消以前的newsViewModel.getNewsFromTopics
,并在可能的情况下启动新的newsViewModel.getNewsFromTopics
。1.直接读取状态并将其作为密钥传递。