当我使用 CompositionLocal 时,我从父级获取数据并对其进行了修改,但我发现它不会触发子级重组。
我已经成功地改变了数据,这可以通过当我在子可组合中添加一个额外的状态然后改变它来触发重组我可以得到新的数据来证明。
有人可以帮我吗?
附加
如下代码
data class GlobalState(var count: Int = 0)
val LocalAppState = compositionLocalOf { GlobalState() }
@Composable
fun App() {
CompositionLocalProvider(LocalAppState provides GlobalState()) {
CountPage(globalState = LocalAppState.current)
}
}
@Composable
fun CountPage(globalState: GlobalState) {
// use it request recomposition worked
// val recomposeScope = currentRecomposeScope
BoxWithConstraints(
contentAlignment = Alignment.Center,
modifier = Modifier
.fillMaxSize()
.clickable {
globalState.count++
// recomposeScope.invalidate()
}) {
Text("count ${globalState.count}")
}
}
我发现一种解决方法是currentRecomposable
用来强制重组,也许有更好的方法,请告诉我。