当前位置: 首页 > news >正文

如何监听Vuex数据的变化?

  • 使用watch方法监听Vuex state的变化:
// 在 Vue 组件中
this.$store.watch((state) => state.someState,(newValue, oldValue) => {console.log('someState changed from', oldValue, 'to', newValue);}
);
  • 使用subscribe方法监听mutation的变化:
// 在 Vuex store 中
store.subscribe((mutation, state) => {console.log('mutation.type:', mutation.type);console.log('mutation.payload:', mutation.payload);
});
  • mapState / mapGetters和组件的watch结合使用:
    如果你想监听Vuex中某个模块的具体状态,可以结合mapState或mapGetters和Vue组件的watch方法,代码更加简洁和模块化
// 在 Vue 组件中
import { mapState } from 'vuex';export default {computed: {...mapState({someState: state => state.someModule.someState})},watch: {someState(newValue, oldValue) {console.log('someState in module someModule changed from', oldValue, 'to', newValue);}}
};
  • subscribeAction方法监听action的触发:
    如果你对action 的触发感兴趣可以使用Vuex提供的subscribeAction方法来监听action的触发
// 在 Vuex store 中
store.subscribeAction((action, state) => {console.log('action.type:', action.type);console.log('action.payload:', action.payload);
});
  • Custom Plugin:
    有时候你需要在Vuex中进行更高级的监听和操作,可以考虑编写一个自定义的Vuex插件
// 定义一个插件
const myPlugin = store => {// 当 store 的 mutation 被提交时调用此函数store.subscribe((mutation, state) => {// mutation.type     -> mutation 的类型// mutation.payload  -> 传递给 mutation 的载荷console.log(`Mutation type: ${mutation.type}`);console.log(`Mutation payload: ${mutation.payload}`);console.log(`Current state: `, state);});
};// 创建 Vuex store 并注册插件
const store = new Vuex.Store({state: {count: 0},mutations: {increment(state) {state.count++;}},plugins: [myPlugin]
});// 提交 mutation
store.commit('increment');
// 控制台将打印出 mutation 的类型、载荷和当前 state
http://www.lryc.cn/news/518505.html

相关文章:

  • Redis 优化秒杀(异步秒杀)
  • 前端中常用的单位度量(px,rpx,rem,em,vw,vh)+图片自适应
  • STM32之一种双通路CAN总线消息备份冗余处理方法(十三)
  • 从零开始:使用VSCode搭建Python数据科学开发环境
  • C#语言的字符串处理
  • 《安富莱嵌入式周报》第348期:开源低功耗测试仪,开源创意万用表,续航100-300小时,开源PCB电机,自制shell和网络协议栈,开源水培自动化系统
  • npm发布流程说明
  • 缓存-文章目录
  • LeetCode 3297.统计重新排列后包含另一个字符串的子字符串数目 I:滑动窗口
  • 如何在 Ubuntu 24.04 上安装 Memcached 服务器教程
  • 《深度学习模型在鸿蒙分布式框架下的跨设备高效之旅》
  • [python3]Excel解析库-xlutils
  • Springboot Bean创建流程、三种Bean注入方式(构造器注入、字段注入、setter注入)、循坏依赖问题
  • mybatisX插件的使用,以及打包成配置
  • 【初阶数据结构】线性表之单链表
  • CentOS7通过yum安装JDK
  • c# 常见的几种取整场景
  • 数据库回滚:大祸临头时
  • 【GoLang】两个字符串如何比较大小?以及字典顺序的比较规则
  • 5G学习笔记之SNPN系列之UE入网和远程配置
  • C#版OpenCv常用函数大全
  • Spring Boot教程之五十二:CrudRepository 和 JpaRepository 之间的区别
  • 蓝桥杯备考:数据结构之栈 和 stack
  • solidity基础 -- 映射
  • Angular 11课程实践:构建高效单页应用的支持代码
  • 测试用例颗粒度说明
  • ESP32 IDF VScode出现头文件“无法打开 源 文件 ”,并有红色下划线警告
  • Windows安装ES单机版设置密码
  • Linux Docker
  • MSE学习