pinia提供的监听方法貌似只能全部监听,没办法监听某个值?-灵析社区

七厦

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](https://link.segmentfault.com/?enc=yiwCGbWdrgfCY1lwU5gN5A%3D%3D.9UNOBVkT%2B%2FIAgkZh5l72s3xEKiMGayiGWgVSsVsQoSA%2FPeYP62C3MHGpPDXHbxHUXJbQLQ8ARVbp%2BgQRdoexoA%3D%3D) // 监听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); }) > 谁设计的新版提问系统?咱们来聊聊吧?

阅读量:16

点赞量:0

问AI
"pinia" 作为 "vue" 团队开发的持久化框架,其本身是和 "vue" 强关联的,简而言之,它 就是为 vue 设计的持久化框架 。 所以,使用 "pinia" 就是 结合 着 "vue" 去使用的,就像题主示例中的代码一样,完全可以使用 "watch" 去进一步监听,"watch" 已经足够强大,所以没必要进行冗余的设计,还能便于维护并保持代码一致性 "$subscribe" 也能满足一般开发场景,如果遇到需要监听 细颗粒度 的场景,那就使用 "watch" 吧 至于为什么提供 "$subscribe" 而不是完全使用 "watch" 进行监听,我认为主要考虑是在 全局处理 这块,"watch" 是跟 组件绑定 的,而 "$subscribe" 是跟 "pinia" 绑定的,如果有个需求是当多组件任一数据发生变化时,将整个 "state" 存入本地缓存,那么 "watch" 就不够稳定了