前言
上一章节我们讲解了重组作用域和 remember,本章我们来讲解下 Compose 的 『无状态』,状态提升,单向数据流;
无状态
所谓的无状态(Stateless)的这个状态指得是什么呢?就是控件的各种属性,比如 TextView 它就有一个状态属性,就是它的内容,我们可以通过 getText 和 setText 来分别获取设置它的内容,这个内容就是它的一个状态信息,而 Compose 是无状态的,是没有这种属性的,对应的Compose中的 Text()
var name = "Mars"
Text(text = name)
我们在设置这个name之后,我们是无法从其他地方拿到这个 name 的文字信息的,这个文字参数只是被 Text 拿来设置用来显示之后就扔了,后续想拿到是拿不到的,因为它根本就没有保存,这就是所谓的无状态;
这个无状态只能说是 Compose 这种声明式框架的一个特点,Compose 可以的无状态并不是绝对的,例如我们来看下面这个函数
@Composable
fun say() {
var text = "Hello"
Text(text)
}
这个函数中的 Text() 是无状态的,但是这个 say() 函数却是有状态的,它的里面有一个仅仅它自己能看到的字符串 “Hello”;
所以 这里所说的无状态都是指的内部的无状态,例如 say() 这个 Compose 组件,它的内部的 Hello 是有状态的,但是,当我们调用这个 say() 的时候
setContent {
say()
}
我们在 setContent 中是获取不到 say 的任何状态的;如果我们想获取这个内部状态的状态值应该怎么实现呢

本文探讨了Compose中的无状态特性,通过状态提升和单向数据流机制,解释了如何在组件间管理和同步数据。还涉及了Material风格的TextField组件和数据一致性策略。
最低0.47元/天 解锁文章
1326

被折叠的 条评论
为什么被折叠?



