remember

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的数据是一个固定不变的基础类型。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容