wsy*_*q1n 2 javascript reactjs vue.js
React 是否有等价于 Vue.set()(又名 this.$set)?它使 Vue 能够更新对象并向属性添加反应性(而不是替换整个对象)。
React 没有Vue 的反应性功能,也不会检测状态对象的深层变化。
React 仅依赖于状态不变性,即状态在更新后应该是一个新对象。
在 Vue 中:
Vue.set(vm.foo, 'bar', 1);
Run Code Online (Sandbox Code Playgroud)
React 中的正确方法:
// just setState for useState hook
this.setState(state => ({
...state,
foo: {
...state.foo,
bar: 1
}
}));
Run Code Online (Sandbox Code Playgroud)
React 中的错误方式:
this.state.foo.bar = 1;
this.setState(this.state); // or this.forceUpdate();
Run Code Online (Sandbox Code Playgroud)
这将更新组件,但在依赖不可变状态的子组件中可能无法按预期工作。这不适用于useState钩子,因为它依赖于不可变状态。
第三方库可用于使 React 状态的不变性更容易(Immer),甚至可以将其替换为可变状态(MobX)。MobX 的工作方式类似于 Vue 反应性(Vue 2 中的描述符 getter/setter,ProxyVue 3 中)。
| 归档时间: |
|
| 查看次数: |
503 次 |
| 最近记录: |