store 的分拆与合并

前面的章节已经提到,Valtio 在代理一个对象的时候,会将其中嵌套的内容一并做代理处理。所以,这就给 store 的分拆提供了基础。

当存在一个以下形式的 store 时。

const state = proxy({
  stateA: { a: 1, b: 1 },
  stateB: { c: 2, d: 2 },
});

那么就可以直接将其分拆成两个独立的 store。

const stateA = state.stateA;
const stateB = state.stateB;

这样,就可以分别对 stateAstateB 进行操作了。并且对 stateAstateB 的修改,也会反映到 state 中。

相反的,如果有两个独立的 store,例如 stateAstateB,那么也可以将它们合并成一个 store。合并的时候只需要再定义一个新的 store,并将 stateAstateB 作为其属性即可。

const state = proxy({
  stateA,
  stateB,
});