remember 不能用使用基础属性
需求,记录一个变化值,但是不行引发重组
1. 搞一个静态变量来记录。
问题:复用,多处引用的话还需要用到map来保存。相对复杂,麻烦
2. 使用remember来实现。
问题:一般情况,remember 跟 mutableStateOf 使用。但是State的变更会导致重组。
但是,这里不想引发重组,所以,不能用mutableStateOf 。但是,这里如果直接使用基础属性
例如
var first = remember { true }
first = false
在后续的重组中remember 不会有任何的意义
解决办法
val first = remember {
Cover(true)
}
class Cover<T>(var v: T)
原因 基础类型不是引用,修改并不能传导。(最基本的XD)
最终的rember是保存在
currentComposer.slotTable.slots中的,通过
internal var reader: SlotReader = slotTable.openReader().also { it.close() }
reader来读取相关的数据。
所以,如果使用基础类型来进行赋值,虽然你在后面代码中修改了值。但是,由于是基础类型,他无法更改到slots中的数据,所以,在slots的数据是一个固定不变的基础类型。