更新视图模型后,Compose UI 未更新状态

Compose UI not updating the state after updating the view model

提问人:arun 提问时间:7/12/2023 最后编辑:arun 更新时间:7/12/2023 访问量:385

问:

我正在尝试根据视图模型中的状态更改更新撰写 UI 视图,以下是我的代码 最初,我正在根据视图模型中的默认值对撰写逻辑处理进行分配和操作,一段时间后,我将进行 API 调用,我正在接收该值并更新 VM fn 中的状态值,但它没有反映 UI我已经分配了操作,请让我知道我错过了什么

**View Model code**
var classAccessedByRefId:  MutableState<String> = mutableStateOf("")

// This is when I update the state once API is successful
    fun updateClassAccessId(classRefId: String) {
                classAccessedByRefId.value = classRefId
            }

**Compose code**

@Composable
fun BookingListItemView(classViewModel: ClassViewModel){
val classAccessedByRefId: String = bookingViewModel.classAccessedByRefId.value

if(classAccessedByRefId.value.isNotEmpty()){
                 // Do some operation if the classAccessedByRefId has value
                        }

}
人造人 科特林 android-jetpack-compose 可变LiveData 可变状态

评论

1赞 ianhanniballake 7/12/2023
你为什么要做这些/当你已经有了已经与组合分开存储的状态时?为什么不直接访问呢?remembermutableStateOfbookingViewModel.classAccessedByRefId.value
0赞 arun 7/12/2023
我试过我没有成功,所以我添加了一个记住,所以如果值被保留到变量并在更改@ianhanniballake更新,你能告诉我如何通过一些代码片段实现该场景吗
0赞 arun 7/12/2023
@ianhanniballake我已经通过删除“记住/可变状态”来编辑代码,但仍然没有运气
0赞 Jemshit 7/12/2023
@arun尝试直接使用 in if 语句bookingViewModel.classAccessedByRefId.value.isNotEmpty()

答:

0赞 zaid khan 7/12/2023 #1
@Composable
fun BookingListItemView(classViewModel: ClassViewModel){


LaunchedEffect(bookingViewModel.classAccessedByRefId.value){

   if(!bookingViewModel.classAccessedByRefId.value.equals("")){
                 // Do some operation if the classAccessedByRefId has value
                        }
}


}

评论

0赞 Jason Capriotti 11/9/2023
这将有助于其他人解释为什么答案中的代码有效。