swiftUI-@State 的作用

Aliancn發表於2024-08-25

@State 是 SwiftUI 中的一個屬性包裝器(property wrapper),它的主要作用是為檢視的私有狀態提供儲存。使用 @State 可以讓 SwiftUI 管理檢視的狀態,並在狀態改變時自動更新檢視。這對於構建響應式的使用者介面至關重要。

以下是 @State 的幾個關鍵點:

  1. 私有狀態管理@State 應該用於檢視內部的狀態管理。這意味著這個狀態是私有的,只有當前檢視可以訪問和修改它。

  2. 值型別@State 適用於簡單的值型別(如 StringIntBool 等)的儲存。當狀態改變時,SwiftUI 會重新繪製依賴於這個狀態的檢視部分。

  3. 雙向繫結:透過使用 $ 字首,@State 變數可以實現與 UI 控制元件的雙向繫結。這意味著 UI 控制元件可以顯示狀態的當前值,並且當使用者與控制元件互動(如輸入文字、切換開關等)時,狀態會自動更新。

  4. 觸發檢視更新:當 @State 變數的值改變時,SwiftUI 會自動重新呼叫檢視的 body 屬性,以反映新的狀態。

示例程式碼:

struct ContentView: View {
    @State private var isOn = false

    var body: some View {
        Toggle("開關", isOn: $isOn)
    }
}

在這個例子中,isOn 是一個 @State 變數,用於儲存開關的狀態。$isOn 建立了一個雙向繫結到 Toggle 控制元件,這意味著當使用者切換開關時,isOn 的值會更新,並且檢視會根據新的狀態重新渲染。