SwiftUI的ObservableObject与EnvironmentObject应用

根据适用范围和存储状态的复杂度的不同,需要选取合适的方案。@State 和 @Binding 提供 View 内部的状态存储,它们应该是被标记为 private 的简单值类型,仅在内部使用。

ObservableObject 和 @ObservedObject 则针对跨越 View 层级的状态共享,它可以处理更复杂的数据类型,其引用类型的特点,也让我们需要在数据变化时通过某种手段向外发送通知 (比如手动调用 objectWillChange.send() 或者使用 @Published),来触发界面刷新。

对于“跳跃式”跨越多个 View 层级的状态,@EnvironmentObject 能让我们更方便地使用 ObservableObject,以达到简化代码的目的。

随着经验的积累,你会逐渐形成对于某个场景下应该使用哪种方式来管理数据和状态的直觉。在此之前,如果你纠结于选择使用哪种方式的话,从 ObservableObject 开始入手会是一个相对好的选择:如果发现状态可以被限制在同一个 View […]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值