[英]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.