TCA中@ObservationState的新绑定语法咨询(ViewStore已弃用)
TCA中替代ViewStore绑定的新语法
在The Composable Architecture(TCA)的新版本里,ViewStore已不再作为推荐用法,你之前的绑定写法可以替换为以下两种常用实现方式:
直接通过Store创建绑定
无需额外创建ViewStore,直接利用Store的binding方法生成绑定,TCA会自动将输入值转换为对应的Action:
TextField("Name", text: store.binding(\.$text))
这里的\.$text是指向状态中text属性的键路径,前提是你的Reducer已经配置好对应属性的绑定Action处理逻辑(对应你之前代码里的.updateText($0))。
使用@Bindable包装器传递绑定
如果需要将状态对象传递给子视图,可先用@Bindable修饰状态实例,再通过$前缀获取绑定:
// 视图内部定义 @Bindable var state: YourAppState var body: some View { TextField("Name", text: $state.text) }
这种方式需要确保Reducer能处理状态属性的变更,通常可以借助TCA提供的.binding扩展让Reducer自动处理这类绑定Action。
内容的提问来源于stack exchange,提问作者Small Talk
相关产品推荐
相关产品推荐

