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 弹出框定位实现方法
Dec 02 Javascript
浏览器页面区域大小的js获取方法
Sep 21 Javascript
table对象中的insertRow与deleteRow使用示例
Jan 26 Javascript
Jquery树插件zTree用法入门教程
Feb 17 Javascript
js日期范围初始化得到前一个月日期的方法
May 05 Javascript
jquery+json实现数据二级联动的方法
Nov 28 Javascript
改变checkbox默认选中状态及取值的实现代码
May 26 Javascript
Vue.js每天必学之Class与样式绑定
Sep 05 Javascript
JavaScript基本类型值-Undefined、Null、Boolean
Feb 23 Javascript
ES6 Array常用扩展的应用实例分析
Jun 26 Javascript
Vue中通过vue-router实现命名视图的问题
Apr 23 Javascript
javascript代码实现简易计算器
Jan 25 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
php中将时间差转换为字符串提示的实现代码
2011/08/08 PHP
PHP数据库链接类(PDO+Access)实例分享
2013/12/05 PHP
php设置允许大文件上传示例代码
2014/03/10 PHP
PHP文件上传处理案例分析
2016/10/15 PHP
php实现数据库的增删改查
2017/02/26 PHP
laravel框架学习笔记之组件化开发实现方法
2020/02/01 PHP
$()JS小技巧
2007/07/21 Javascript
Ruffy javascript 学习笔记
2009/11/30 Javascript
给js文件传参数(详解)
2014/07/13 Javascript
理解javascript中的回调函数(callback)
2014/09/02 Javascript
jquery的幻灯片图片切换效果代码分享
2015/09/07 Javascript
通过正则表达式获取url中参数的简单实现
2016/06/07 Javascript
第一次接触神奇的Bootstrap基础排版
2016/07/26 Javascript
详解使用JWT实现单点登录(完全跨域方案)
2019/08/02 Javascript
微信小程序HTTP请求从0到1封装
2019/09/09 Javascript
微信小程序自定义导航栏(模板化)
2019/11/15 Javascript
比较详细Python正则表达式操作指南(re使用)
2008/09/06 Python
python回调函数用法实例分析
2015/05/09 Python
Python文件右键找不到IDLE打开项解决办法
2015/06/08 Python
Python素数检测实例分析
2015/06/15 Python
python3实现字符串的全排列的方法(无重复字符)
2018/07/07 Python
python 划分数据集为训练集和测试集的方法
2018/12/11 Python
Django 反向生成url实例详解
2019/07/30 Python
基于Tensorflow使用CPU而不用GPU问题的解决
2020/02/07 Python
django实现模型字段动态choice的操作
2020/04/01 Python
python实现一次性封装多条sql语句(begin end)
2020/06/06 Python
护士求职推荐信范文
2013/11/23 职场文书
自荐信格式简述
2014/01/25 职场文书
婚庆司仪主持词
2014/03/15 职场文书
作文评语集锦大全
2014/04/23 职场文书
学雷锋月活动总结
2014/04/25 职场文书
国家励志奖学金个人先进事迹材料
2014/05/04 职场文书
档案信息化建设方案
2014/05/16 职场文书
音乐教师个人工作总结
2015/02/06 职场文书
儿子满月酒致辞
2015/07/29 职场文书
SpringCloud中分析讲解Feign组件添加请求头有哪些坑梳理
2022/06/21 Java/Android