pinia提供的监听方法貌似只能全部监听,没办法监听某个值?
所以我在多个组件中使用监听时就不得不过滤一遍是吗?
这么设计有什么好处吗?比watch差远了不是吗?
还是说我理解错了?
官网案例:
const appStore = useAppStore();
appStore.$subscribe((mutation, state) => {
// import { MutationType } from 'pinia'
mutation.type // 'direct' | 'patch object' | 'patch function'
// 和 cartStore.$id 一样
mutation.storeId // 'cart'
// 只有 mutation.type === 'patch object'的情况下才可用
mutation.payload // 传递给 cartStore.$patch() 的补丁对象。
mutation.event
// 每当状态发生变化时,将整个 state 持久化到本地存储。
localStorage.setItem('cart', JSON.stringify(state))
})
网络的方案:
https://blog.csdn.net/NiHao___/article/details/130126090
// 监听pinia中整个state
store.$subscribe((mutation, state) => {
console.log(state);
})
// 监听pinia中整个state
watch(store.$state, (newValue, oldValue) => {
console.log(newValue,oldValue);
})
// 只监听pinia中某一个值的变化
watch(() => store.count, (newValue, oldValue) => {
console.log(newValue, oldValue);
})
谁设计的新版提问系统?咱们来聊聊吧?
pinia
作为vue
团队开发的持久化框架,其本身是和vue
强关联的,简而言之,它 就是为 vue 设计的持久化框架。所以,使用
pinia
就是 结合 着vue
去使用的,就像题主示例中的代码一样,完全可以使用watch
去进一步监听,watch
已经足够强大,所以没必要进行冗余的设计,还能便于维护并保持代码一致性$subscribe
也能满足一般开发场景,如果遇到需要监听 细颗粒度 的场景,那就使用watch
吧至于为什么提供
$subscribe
而不是完全使用watch
进行监听,我认为主要考虑是在 全局处理 这块,watch
是跟 组件绑定 的,而$subscribe
是跟pinia
绑定的,如果有个需求是当多组件任一数据发生变化时,将整个state
存入本地缓存,那么watch
就不够稳定了