[英]SwiftUI callback as parameter to a view
我試圖將我的 SwiftUI 視圖拆分為盡可能小的可重用組件。 所以我有位於頂部的 MainView,然后有兩個視圖(MyContentView 和 MenuView),它們都位於 MainView 中。 兩個內部視圖都有一些我想在 MainView 中更新某些內容的功能。 所以我想我可以將一些函數作為參數從 MainView 傳遞給內部視圖,所以當在內部視圖中按下按鈕時,它會觸發 MainView 中的代碼。 我設法最接近它的是導致每次更新內部視圖時都會觸發函數參數。 實現這一目標的最佳方法是什么? 這是我的代碼示例:
主視圖:
struct MainView: View {
var body: some View {
VStack {
MyContentView(self.$doSomething)
MenuView(self.$doSomething)
}
}
func doSomething() {
print("do something")
}
}
struct MyContentView : View {
var doSomething : ()
var body: some View {
Button(action: { self.doSomething }) { Text("do something") }
}
}
struct MenuView : View {
var doSomething : ()
var body: some View {
Button(action: { self.doSomething }) { Text("Menu do something") }
}
}
能夠從內部視圖接收回調的最佳實踐是什么?
下面的變體作品。 使用 Xcode 11.4 測試。
struct MainView: View {
var body: some View {
VStack {
MyContentView(doSomething: self.doSomething)
MenuView(doSomething: self.doSomething)
}
}
func doSomething() {
print("do something")
}
}
struct MyContentView : View {
var doSomething : () -> ()
var body: some View {
Button(action: { self.doSomething() }) { Text("do something") }
}
}
struct MenuView : View {
var doSomething : () -> ()
var body: some View {
Button(action: { self.doSomething() }) { Text("Menu do something") }
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.