Skip to content

shadow

基于现有的AutoStore实例创建一个Shadow AutoStore实例,该Shadow AutoStore实例的所有computedwatch是基于原AutoStore实例进行计算。

ts
const store = new AutoStore({
    order: {
        price: 10,
        count: 3,
        total: computed((scope: any) => scope.price * scope.count),
    },
});
const shadowStore = store.shadow({
    user: 'fisher',
    orderTotal: computed((scope: any) => {
        return scope.order.price * scope.order.count;
    }),
});
expect(shadowStore.state.orderTotal).toBe(30);
store.state.order.count = 4;
expect(shadowStore.state.orderTotal).toBe(40);
  • 上例中创建了一个shadowStore,该shadowStoreorderTotal是基于store.state计算出来的,所以当order.count改变时,orderTotal也会改 变。
  • 创建的shadowStore实例也是一个普通的AutoStore实例,所以可以像使用普通AutoStore一样使用它。区别就在computedwatch是基于原AutoStore实例进行计算。