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

如何监听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.kler.cn/a/472834.html

相关文章:

  • Nginx:Stream模块
  • 如何监控批量写入的性能瓶颈?
  • 自动驾驶控制与规划——Project 6: A* Route Planning
  • 操作手册:集成钉钉审批实例消息监听配置
  • Linux下文件重定向
  • python中的列表推导式详解
  • 第四届智能系统、通信与计算机网络国际学术会议(ISCCN 2025)
  • 虚拟机配置静态ip后出现两个ip问题
  • 单片机毕业设计项目分享(4)
  • 实验四 数组和函数
  • Mysql--基础篇--事务(ACID特征及实现原理,事务管理模式,隔离级别,并发问题,锁机制,行级锁,表级锁,意向锁,共享锁,排他锁,死锁,MVCC)
  • 深入学习RabbitMQ的Direct Exchange(直连交换机)
  • 常见的http状态码 + ResponseEntity
  • 设计模式 结构型 桥接模式(Bridge Pattern)与 常见技术框架应用 解析
  • 【centos8 ES】Elasticsearch linux 龙晰8操作系统安装
  • Flink分区方式有哪些
  • Unity:删除注册表内的项目记录
  • 05、Docker学习,常用安装:Mysql、Redis、Nginx、Nacos
  • springboot点餐平台网站
  • 小程序学习08—— 系统参数获取和navBar组件样式动态设置
  • 58. Three.js案例-创建一个带有红蓝配置的半球光源的场景
  • BMS应用软件开发 — 3 电池系统的组成
  • 生成透明图的方式?
  • 【计算机网络】课程 实验四 配置快速生成树协议(RSTP)
  • 腾讯云AI代码助手编程挑战赛-待办事项
  • 第5章——与HTTP协作的Web服务器