Jetpack Compose -> 无状态、状态提升,单向数据流

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言


上一章节我们讲解了重组作用域和 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”;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值