91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SwiftUI中state和Binding的區別有哪些

發布時間:2021-03-29 09:31:07 來源:億速云 閱讀:284 作者:小新 欄目:開發技術

這篇文章主要介紹SwiftUI中state和Binding的區別有哪些,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

@state 綁定值的狀態,其屬性的修飾官方推薦使用private.上代碼(ps:這里沒用private 進行修飾,是為了演示區別)
import SwiftUI

struct FilterView: View {
// @Binding var isFavorite: Bool
 @State var isFavorite = true
 
 var body: some View {
  Toggle(isOn: $isFavorite) {
   
  }
  let buttonTitle = isFavorite ? "嘔吼" : "頓頓"
  Text(buttonTitle)
  
 }
}
struct ProductView: View {
 var titleS: String
 
 //:不想讓外部訪問的變量 需要初始化
 @State private var changeButtonTtile = true
 var body: some View {
  Button (action: {
   changeButtonTtile.toggle()
  }) {
   let buttonTitle = changeButtonTtile ? "哈哈哈" : "啦啦啦啦"
   Text(buttonTitle)
   FilterView(isFavorite: changeButtonTtile)

  }
 }
}

這里我們看到 @State  var isFavorite = true通過state 進行修飾.這個時候我們點擊FilterView的開關 我們只能刷新當前FilterView的界面.注意這里:FilterView(isFavorite: changeButtonTtile) 初始化傳入的是changeButtonTtile的value,也就實際值.

下面我們把State注釋掉 ,打開@Bingding 那一行

import SwiftUI

struct FilterView: View {
 @Binding var isFavorite: Bool
// @State var isFavorite = true
 
 var body: some View {
  Toggle(isOn: $isFavorite) {
   
  }
  let buttonTitle = isFavorite ? "嘔吼" : "頓頓"
  Text(buttonTitle)
  
 }
}
struct ProductView: View {
 var titleS: String
 
 //:不想讓外部訪問的變量 需要初始化
 @State private var changeButtonTtile = true
 var body: some View {
  Button (action: {
   changeButtonTtile.toggle()
  }) {
   let buttonTitle = changeButtonTtile ? "哈哈哈" : "啦啦啦啦"
   Text(buttonTitle)
   FilterView(isFavorite: $changeButtonTtile)
//:注意這里的取值 變成了$
  }
 }
}

這里我們運行代碼,點擊開關,你發現了什么??.ProductView 的UI 也發生了變化.這個時候FilterView 傳入的是changeBtnTitle的引用,而不是值.這樣你在子視圖改變@Binding修飾的值,父視圖也會跟著刷新.

使用小結

  • 當自定義視圖的數據需要外部傳入的時候, 使用普通的屬性

  • 當自定義的視圖需要通過數據變化更新視圖時, 對普通屬性加上@State修飾

  • 當自定義的視圖需要將視圖的變化表現在數據的變化時,對普通屬性加上@Binding修飾, @Binding 包含了@State的功能, 但一般不會去對@Binding屬性做修改

以上是“SwiftUI中state和Binding的區別有哪些”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

荃湾区| 渝中区| 措勤县| 龙海市| 阿拉善右旗| 遂宁市| 建昌县| 崇文区| 隆安县| 麦盖提县| 鄯善县| 全州县| 白水县| 获嘉县| 桦川县| 新龙县| 济源市| 潞城市| 延津县| 双柏县| 扶余县| 英德市| 英吉沙县| 巴彦淖尔市| 万州区| 阜康市| 轮台县| 方正县| 绥滨县| 长宁区| 陈巴尔虎旗| 湄潭县| 景泰县| 若羌县| 西安市| 通海县| 象州县| 龙岩市| 吴江市| 紫云| 安岳县|