我正在经历写作的道路,我一直看到所有这些对国家提升的强调。与旧的范例相比,这在新的撰写框架中是否更具相关性?总的来说,它似乎只是一种很好的编程技术。我担心我错过了Composable系统中的一个特殊优势。
发布于 2021-05-25 08:41:31
从Activity或Fragment的角度来看,它们几乎是相同的。进入一个状态流,Activity或Fragment需要通过更新其内容来对更改做出反应。
然而,在Compose中,可以说,可组合的内容本身就是UI的小片段。在Compose中,您可以任意地将UI拆分成越来越小的片段,每个片段都会对状态变化做出反应。正是在这种分解中(可以这么说),状态提升变得很重要,并允许这些较小的UI片段可重用。即使您使用Text或Button,它们也只是布局和绘制文本或映射用户输入到单击事件等的可组合函数。
如果状态已经在UI模型中,那么它已经被提升了。无需额外的吊装。只有当可组合体有自己的信息模型时,状态提升才是重要的。例如,TextField将其状态作为参数,而不是在内部创建和保存它。这允许状态直接保存在UI模型中,而不需要与其同步。该模型可以决定当状态改变时,TextField只是请求状态改变,而不进行控制。传统上,TextField将拥有自己的文本内部模型,并且仅在值发生变化时发送onChange通知。这意味着至少有两个字段的值模型,一个由控件持有,另一个由应用程序模型持有。同步这些可能会很棘手。
允许可组合状态的提升允许存在单一的真理来源,即应用程序模型,而不是需要全部同步到单个值的多个状态。Compose并不规定模型是什么或者它是如何存储的,它只需要知道值何时改变,这样它就知道什么时候更新UI。
https://stackoverflow.com/questions/67677445
复制相似问题