重组,指的是任何Composable函数在任何时候都可以被重新调用,如果您有一个庞大的Composable层级结构,当您的层级中的某一部分发生改变时,您不会希望重新计算整个层级结构,所以Composable函数时可重新启动的(restartbale)的
您可以利用这一特性来实现一些强大的功能。
举个例子
这里有一个Bind函数 里面是一些Android开发的常见代码
fun bind(liveMsgs: LiveData<MessageData>){
liveMsgs.observe(this) { nsgs->
updateBody(msgs)
}
}
我们有一个LiveData,并且希望视图可以订阅它,为此,我们调用observe方法并传入一个LifecycleOwner,并在接下来传入lambda。lambda会在每次LiveData更新被调用,并且发生这种情况时,我们会想要更新视图
使用Compose
@Composable
fun bind(liveMsgs: LiveData<MessageData>){
val msgs by liveMsgs.observeAsState()
for (msg in msgs){
Message(msg)
}
}
Compose 提供了一种现代方法来定义您的ui
。。现代有点像flutter swiftUi
这是您可以有效的关注点分离。
由于Composable函数与普通Kotlin函数很相似。因此您使用Compose编写和重构UI所使用的工具
与您进行Android开发的知识储备将会无缝衔接。