vuex state中的数组变化监听实例


Posted in Javascript onNovember 06, 2019

前言

首先,因为我有一个需求就是vue组件中有一组多选框,选中多选框的内容,要在另一个组件中进行视图更新,这个就设计的兄弟组件之间的通信了,兄弟组件之前通信我首先选用的vuex这个解决办法。

问题

vuex的state用来放数据,我就把数组放在了vuex中,然后设置了修改的函数。最终store.js中的代码如下:

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

const state = {
 messArray:[]
}

const mutations = {
 modifyArray(state, obj){
 state.messArray=obj.messArray
 // Vue.$set(this,this.messArray,[...obj.messArray])
}

const actions={
 modifyArr(context,obj){
 context.commit('modifyArray',obj)
 },
}
export default new Vuex.Store({
 state,
 mutations,
 actions
})

然后在组建的data中,通过mapState映射过去:

//在使用事前必须引入这个
import { mapState, mapGetters, mapMutations, mapActions } from 'vuex'

data() {
  return {
  ...mapState(["messArray"]),
  }
 }

然后在watch中设置了监听:

watch:{
  messArray: function(val){
  console.log("watch ChildA.vue "+val)
  }
}

这个时候问题就出来了,虽然数组修改了,但是watch就是监听不到。

解决办法

在我搜索了一些网上的办法之后,发现大部分我都用不来,最后只能巧妙的通过computed和getter解决了这个问题。

给刚才的store.js添加一个getter

const getters = {
 messArray_get:state=>state.messArray,
}

然后在要监听变化的组件中的computed中添加如下代码:

...mapGetters(['messArray_get']),

然后在watch中这样写

watch:{

  messArray_get : function(val){
   console.log("messArray_get "+val)
  }

 }

vuex state中的数组变化监听实例

vuex state中的数组变化监听实例

大功告成,就是如此简单巧妙。

以上这篇vuex state中的数组变化监听实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 多级下拉菜单核心代码
May 21 Javascript
网页中CDATA标记的说明
Sep 12 Javascript
JavaScript 原型继承
Dec 26 Javascript
获取客户端网卡MAC地址和IP地址实现JS代码
Mar 17 Javascript
JQuery中阻止事件冒泡几种方式及其区别介绍
Jan 15 Javascript
AngularJS基础 ng-keypress 指令简单示例
Aug 02 Javascript
JS针对Array的各种操作汇总
Nov 29 Javascript
javascript验证香港身份证的格式或真实性
Feb 07 Javascript
vuejs事件中心管理组件间的通信详解
Aug 09 Javascript
vue2.0实现音乐/视频播放进度条组件
Jun 06 Javascript
vue使用websocket的方法实例分析
Jun 22 Javascript
原生js实现表格翻页和跳转
Sep 29 Javascript
element的el-table中记录滚动条位置的示例代码
Nov 06 #Javascript
webpack是如何实现模块化加载的方法
Nov 06 #Javascript
node读写Excel操作实例分析
Nov 06 #Javascript
详解vue页面首次加载缓慢原因及解决方案
Nov 06 #Javascript
electron 安装,调试,打包的具体使用
Nov 06 #Javascript
weui中的picker使用js进行动态绑定数据问题
Nov 06 #Javascript
在vue中阻止浏览器后退的实例
Nov 06 #Javascript
You might like
2020显卡排行榜天梯图 显卡天梯图2020年3月最新版
2020/04/02 数码科技
php 无极分类(递归)实现代码
2010/01/05 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
2013/11/27 PHP
php简单统计中文个数的方法
2016/09/30 PHP
safari下载文件自动加了html后缀问题
2018/11/09 PHP
PHP合并两个或多个数组的方法
2019/01/20 PHP
ThinkPHP5框架中使用JWT的方法示例
2020/06/03 PHP
客户端js性能优化小技巧整理
2013/11/05 Javascript
jQuery scroll事件实现监控滚动条分页示例
2014/04/04 Javascript
node.js中的require使用详解
2014/12/15 Javascript
JS中sort函数排序用法实例分析
2016/06/16 Javascript
jQuery获取同级元素的简单代码
2016/07/09 Javascript
jQuery Dialog 打开时自动聚焦的解决方法(两种方法)
2016/11/24 Javascript
基于javascript实现的快速排序
2016/12/02 Javascript
详解Javascript百度地图接口开发文档中的类和方法
2017/02/07 Javascript
JS操作xml对象转换为Json对象示例
2017/03/25 Javascript
基于JavaScript实现的快速排序算法分析
2017/04/14 Javascript
深入探究node之Transform
2017/07/20 Javascript
fullpage.js最后一屏滚动方式
2018/02/06 Javascript
koa-router路由参数和前端路由的结合详解
2019/05/19 Javascript
微信小程序跨页面数据传递事件响应实现过程解析
2019/12/19 Javascript
Nuxt.js 静态资源和打包的操作
2020/11/06 Javascript
如何使用RoughViz可视化Vue.js中的草绘图表
2021/01/30 Vue.js
[01:09:19]DOTA2-DPC中国联赛 正赛 VG vs Aster BO3 第二场 2月28日
2021/03/11 DOTA
python实现向ppt文件里插入新幻灯片页面的方法
2015/04/28 Python
Python实现复杂对象转JSON的方法示例
2017/06/22 Python
python+tkinter实现学生管理系统
2019/08/20 Python
基于Python实现扑克牌面试题
2019/12/11 Python
Python 限定函数参数的类型及默认值方式
2019/12/24 Python
毕业生个人求职的自我评价
2013/10/28 职场文书
优秀党员自我评价范文
2014/09/15 职场文书
股东出资证明书(正规版)
2014/09/24 职场文书
教师党员群众路线教育实践活动心得体会
2014/11/04 职场文书
2015年元旦文艺晚会总结(学院)
2014/11/28 职场文书
2015年七一建党节活动方案
2015/05/05 职场文书
重阳节活动主持词
2015/07/04 职场文书