SwiftUI @Binding 未在子项中更新

Posted

技术标签:

【中文标题】SwiftUI @Binding 未在子项中更新【英文标题】:SwiftUI @Binding not updating in child 【发布时间】:2019-11-16 23:24:10 【问题描述】:

在我的主视图中,我有以下变量:

@State private var link = "https://www.google.com"

视图有两个包含变量绑定的子视图:

@Binding var text: String

,初始化如下:Child(text: $link)

子 1 更新变量,父接收更改,但子 2 仍然保留第一个值

【问题讨论】:

请出示您的完整示例代码,因为我无法重现这种情况。 【参考方案1】:

如果你想让一个视图重建自己,你需要修改它的状态、环境对象或观察对象;这些是视图订阅的唯一内容。如果您只是修改绑定,则视图无法知道它需要重建。您应该将绑定修改为视图的环境、状态或观察对象的副作用。由于您在子视图和父视图之间有一些共享状态,@EnvironmentObject 似乎是做这件事的正确位置。

【讨论】:

谢谢 :) 再问一个问题,一个Binding不能同时标记为State? 这在 SwiftUI 范式中没有任何意义。应该只有一个单一的事实来源。绑定是从状态派生的,因此真相的来源已经存在于原始状态中。

以上是关于SwiftUI @Binding 未在子项中更新的主要内容,如果未能解决你的问题,请参考以下文章

添加 ViewModel 后,SwiftUI 视图未在按钮切换上更新

SwiftUI如何在View在初始化程序中需要@Binding时实例化PreviewProvider

SwiftUI 自定义 List 不能在 ForEach 中使用 Binding

SwiftUI 将@Published viewmodel 对象值传递给@Binding

如何使用 SwiftUI 更新不同的视图?

如何在 SwiftUI 中使用 inout 而不是 Binding?