shadow
基于现有的AutoStore
实例创建一个Shadow AutoStore
实例,该Shadow AutoStore
实例的所有computed
和watch
是基于原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
,该shadowStore
的orderTotal
是基于store.state
计算出来的,所以当order.count
改变时,orderTotal
也会改 变。 - 创建的
shadowStore
实例也是一个普通的AutoStore
实例,所以可以像使用普通AutoStore
一样使用它。区别就在computed
和watch
是基于原AutoStore
实例进行计算。