d_i*_*_iv 2 kotlin android-jetpack-compose
这个关于 jetpack-compose 中状态提升的教程说:
通过向 OnboardingScreen 传递函数而不是状态,我们使该可组合项更具可重用性,并保护状态不被其他可组合项改变。一般来说,它使事情变得简单。
传递回调函数如何比直接传递状态更好地实现这些既定目标?
这是因为可组合函数现在是“无状态的”,这意味着它不会改变其范围内的任何内容。
这很简单,因为:
对于每个输入,该函数具有相同的输出(因为它仅依赖于其输入并且不会改变外部的任何内容)。
它变得非常可测试(因为 1)。
它赋予任何使用它的人权力。他们可以随心所欲地“改变”状态。想象一下一个TextField(text: String, onTextChanged: (text: String) -> Unit)
. 您可以根据需要更改状态(例如,从字符串中删除任何数字,然后将其应用到您的状态)。如果TextField
处理状态本身,它总是会将状态更改为实际文本(并且您将需要针对上述场景的另一种机制)。
这为您的可组合项带来了简单性,因为您不必担心您的可组合项(例如TextField
)如何更改状态。
归档时间: |
|
查看次数: |
1040 次 |
最近记录: |