如何让作为@Environment的Observable类变量支持@Bindable?
解决方法
要让TextField能绑定到环境中User实例的username属性,你需要用@Bindable包装环境变量user,具体操作如下:
- 在声明环境变量时添加
@Bindable修饰符:
@Bindable @Environment(User.self) private var user
- 之后即可正常使用
$user.username实现文本框的双向绑定:
TextField(text: $user.username)
原代码报错原因
原代码直接使用$user.username时抛出错误:无法在作用域中找到 '$user',这是因为@Environment(User.self)提供的是只读的实例引用包装器,不会自动生成绑定能力。通过@Bindable包装后,Observable实例会被转换为可绑定对象,此时就能通过$符号获取属性的绑定值,实现双向更新。
内容的提问来源于stack exchange,提问作者Ilja
相关产品推荐
相关产品推荐

