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 相关文章推荐
JS效率个人经验谈(8-15更新),加入range技巧
Jan 09 Javascript
js调用css属性写法
Sep 21 Javascript
javascript轻量级模板引擎juicer使用指南
Jun 22 Javascript
JavaScript实现大数的运算
Nov 24 Javascript
JavaScript 表单处理实现代码
Apr 13 Javascript
Javascript编程之继承实例汇总
Nov 28 Javascript
Bootstrap布局组件教程之Bootstrap下拉菜单
Jun 12 Javascript
JS中BOM相关知识点总结(必看篇)
Nov 22 Javascript
js 轮播效果实例分享
Dec 28 Javascript
日期时间范围选择插件:daterangepicker使用总结(必看篇)
Sep 14 Javascript
vue-router之nuxt动态路由设置的两种方法小结
Sep 26 Javascript
jQuery选择器之层次选择器用法实例分析
Feb 19 jQuery
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
php 按指定元素值去除数组元素的实现方法
2011/11/04 PHP
PHP结合Ueditor并修改图片上传路径
2016/10/16 PHP
PHP $O00OO0=urldecode & eval 解密,记一次商业源码的去后门
2020/09/13 PHP
Javascript技术技巧大全(五)
2007/01/22 Javascript
初窥JQuery-Jquery简介 入门了解篇
2010/11/25 Javascript
js取滚动条的尺寸的函数代码
2011/11/30 Javascript
js函数参数设置默认值的一种变通实现方法
2014/05/26 Javascript
Extjs grid panel自带滚动条失效的解决方法
2014/09/11 Javascript
js调用webservice构造SOAP进行身份验证
2016/04/27 Javascript
jQuery插件echarts实现的单折线图效果示例【附demo源码下载】
2017/03/04 Javascript
JS设置手机验证码60s等待实现代码
2017/06/14 Javascript
Node.js 中使用 async 函数的方法
2017/11/20 Javascript
基于Vue2.X的路由和钩子函数详解
2018/02/09 Javascript
JavaScript前端页面搜索功能案例【基于jQuery】
2019/07/10 jQuery
Python实现Event回调机制的方法
2019/02/13 Python
Python应用领域和就业形势分析总结
2019/05/14 Python
python中的协程深入理解
2019/06/10 Python
Django组件content-type使用方法详解
2019/07/19 Python
wxPython电子表格功能wx.grid实例教程
2019/11/19 Python
Python 类的魔法属性用法实例分析
2019/11/21 Python
Python实现检测文件的MD5值来查找重复文件案例
2020/03/12 Python
Python响应对象text属性乱码解决方案
2020/03/31 Python
Django日志及中间件模块应用案例
2020/09/10 Python
Django-silk性能测试工具安装及使用解析
2020/11/28 Python
英国汽车座椅和婴儿车购物网站:Uber Kids
2017/04/19 全球购物
退休感言
2014/01/28 职场文书
应届生自荐信
2014/06/30 职场文书
分居协议书范本
2014/11/03 职场文书
酒店人事专员岗位职责
2015/04/07 职场文书
酒店客房服务员岗位职责
2015/04/09 职场文书
上班迟到检讨书
2015/05/06 职场文书
七年级语文教学反思
2016/03/03 职场文书
创业计划书之花店
2019/09/20 职场文书
Python中requests做接口测试的方法
2021/05/30 Python
Pytorch可视化的几种实现方法
2021/06/10 Python
苹果M1芯片安装nginx 并且部署vue项目步骤详解
2021/11/20 Servers