remember

remember 不能用使用基礎(chǔ)屬性

需求,記錄一個變化值,但是不行引發(fā)重組

1. 搞一個靜態(tài)變量來記錄。

問題:復(fù)用,多處引用的話還需要用到map來保存。相對復(fù)雜,麻煩

2. 使用remember來實現(xiàn)。

問題:一般情況,remember 跟 mutableStateOf 使用。但是State的變更會導(dǎo)致重組。
但是,這里不想引發(fā)重組,所以,不能用mutableStateOf 。但是,這里如果直接使用基礎(chǔ)屬性
例如

   var first = remember {  true   }
   first =  false 

在后續(xù)的重組中remember 不會有任何的意義
解決辦法

   val first = remember {
        Cover(true)
    }

class Cover<T>(var v: T)

原因 基礎(chǔ)類型不是引用,修改并不能傳導(dǎo)。(最基本的XD)

最終的rember是保存在
currentComposer.slotTable.slots中的,通過

    internal var reader: SlotReader = slotTable.openReader().also { it.close() }

reader來讀取相關(guān)的數(shù)據(jù)。
所以,如果使用基礎(chǔ)類型來進行賦值,雖然你在后面代碼中修改了值。但是,由于是基礎(chǔ)類型,他無法更改到slots中的數(shù)據(jù),所以,在slots的數(shù)據(jù)是一個固定不變的基礎(chǔ)類型。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容