簡體   English   中英

在jetpack compose中使用非本地state?

[英]Use non-local state in jetpack compose?

可以從可組合 function 中使用非本地 state 嗎? 一個示例是 Composable,它顯示帶有從MutableState獲取的字符串的 Text,該字符串存儲為通過 Ambient 檢索的 object 的成員,如下所示:


data class ServiceX (
   val whateverString: MutableState<String>("meow")
)


@Composable
fun Whatever() {
   val serviceX = AmbientServiceX.current
   Text(serviceX.whateverString)
}

whateverString發生變化時,可組合function會重新繪制嗎? 這有什么問題嗎?

從技術上講,它應該可以工作,但是您可能希望將MutableState更改為mutableStateOf ,這會在幕后制作更多的好東西。

但我建議在 compose 中避免使用這樣的模式。 一般來說,環境應該很少使用,因為環境使可組合物變得“神奇”,它不明顯值來自何處或觸發值更改的位置。 它本質上使您的代碼很難調試。

傾向於創建孤立的組件,因為這些組件更易於構建和維護 - 並且是 compose 的一大好處。

@Composable
fun Whatever(whateverString: String) {
   Text(whateverString)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM