场景是这样:有一个 store,初始化时需要从服务端加载数据。用户在网页操作期间,state 产生变化了,需要再保存会服务端。但是初次加载时就会触发 subscribe,如何禁用呢?
这是代码现场:
https://codesandbox.io/s/exciting-ganguly-id62o9?file=/src/Ap...
我也把关键的几处代码罗列出来。
通过 subscribe 观察 store 的变化,并执行保存服务端的逻辑
// 订阅每次变化,保存至服务端。这里简化操作了,把变更记录直观显示出来
useCounter.$subscribe((mutation, state) => {
log.value += "<hr>" + JSON.stringify(mutation);
});
通过 load 方法把从服务端获取的数据,保存至 store
// store 中初次加载数据,这里简化只加载一个
const load = (c) => {
count.value = c;
};
或者说是不是有更好的实现办法呢?如果我讲的不清楚,可以再补充说明。
可以加一个flag, 初始化时默认为false, 初始触发
subscribe
, 改一下状态就行: