惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
The GitHub Blog
The GitHub Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
雷峰网
雷峰网
U
Unit 42
Y
Y Combinator Blog
I
InfoQ
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
量子位
Microsoft Security Blog
Microsoft Security Blog
B
Blog
The Cloudflare Blog
F
Fortinet All Blogs
Google DeepMind News
Google DeepMind News
MyScale Blog
MyScale Blog
C
Check Point Blog
S
SegmentFault 最新的问题
爱范儿
爱范儿
博客园 - 叶小钗
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Hugging Face - Blog
Hugging Face - Blog
罗磊的独立博客
T
Tailwind CSS Blog

liaooo

react-router在组件外操作路由 – liaooo Vue3自动导入常用api – liaooo Vue3自定义组件名字 – liaooo Vue+ts使用animate.css – liaooo uni-app中flyio的使用 – liaooo 【开源】查看网站在不同设备的预览效果 – liaooo Pinia的使用 – liaooo craco配置postcss不生效 – liaooo Vite配置preprocessorOptions全局引入less – liaooo
监听Pinia仓库中的数据变化 – liaooo
liao · 2022-07-05 · via liaooo

当仓库中state数据发生变化时,可以通过$subscribe进行监听

<script setup>
    import { storeToRefs } from 'pinia'
    import useStore from './store'
    const { test } = useStore()
    const { name, website } = storeToRefs(test)
  // 监听仓库数据变化
    const subscribe = test.$subscribe((mutation, state) => {},{})

  // 触发action
    test.changeName('liaoliao')
</script>

详解

store.$subscribe((mutation, state)=>{} , {})

$subscribe()有两个参数

第一个参数

回调函数 函数带有两个参数mutationstate

mutation

对象 有三个属性 eventsstoreIdtype

events 包含state变化前后的数据

{
    "effect": {
                     ...
    },
    "target": {
        "name": "liaoliao",
        "website": "https://liaooo.cn"
    },
    "type": "set",
    "key": "name",
    "newValue": "liaoliao",
    "oldValue": "liao"
}

storeId

当前仓库的名字

storeID: "test"

type

用什么方式触发变化

type: "direct"
// "direct" 通过 action 变化的
// "patch object" 通过 $patch 传递对象的方式改变的
// "patch function"  通过 $patch 传递函数的方式改变的

第二个参数

对象 一些参数配置

{
  detached: false,
  immediate:false,
  deep:false,
  flush:'···',
}

detached

布尔值

默认false 订阅所在的组件被卸载时,订阅停止

如果设置detached值为true 时,即使所在组件被卸载,订阅依然生效

主动停止订阅

const subscribe = test.$subscribe((mutation, state) => {},{})
// 调用变量主动停止订阅
subscribe()

Pinia

https://pinia.vuejs.org/core-concepts/state.html#subscribing-to-the-state

Vuex

https://vuex.vuejs.org/zh/api/index.html#subscribe