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 ready函数源代码研究
Dec 06 Javascript
12种不宜使用的Javascript语法整理
Nov 04 Javascript
浅谈javascript 函数表达式和函数声明的区别
Jan 05 Javascript
js判断图片加载完成后获取图片实际宽高的方法
Feb 25 Javascript
基于javascript实现的快速排序
Dec 02 Javascript
ionic2懒加载配置详解
Sep 01 Javascript
利用JQUERY实现多个AJAX请求等待的实例
Dec 14 jQuery
微信小程序url传参写变量的方法
Aug 09 Javascript
如何用Node写页面爬虫的工具集
Oct 26 Javascript
JavaScript对象的特性与实践应用深入详解
Dec 30 Javascript
微信小程序自定义导航栏
Dec 31 Javascript
vue中axios封装使用的完整教程
Mar 03 Vue.js
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
德生PL330的评价与改造
2021/03/02 无线电
PHP 通过Socket收发十六进制数据的实现代码
2013/08/16 PHP
PHP操作MySQL的mysql_fetch_* 函数的常见用法教程
2015/12/25 PHP
注释PHP和html混合代码的小技巧(分享)
2016/11/03 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
2017/11/28 PHP
Laravel框架实现多数据库连接操作详解
2019/07/12 PHP
HR vs CL BO3 第二场 2.13
2021/03/10 DOTA
翻译整理的jQuery使用查询手册
2007/03/07 Javascript
jquery offset函数应用实例
2012/11/14 Javascript
jquery 实现上下滚动效果示例代码
2013/08/09 Javascript
JS仿百度搜索自动提示框匹配查询功能
2013/11/21 Javascript
JavaScript实现QQ聊天消息展示和评论提交功能
2017/05/22 Javascript
JavaScript requestAnimationFrame动画详解
2017/09/14 Javascript
微信小程序-getUserInfo回调的实例详解
2017/10/27 Javascript
微信小程序picker组件简单用法示例【附demo源码下载】
2017/12/05 Javascript
详解ES6系列之私有变量的实现
2018/11/21 Javascript
详解nuxt 微信公众号支付遇到的问题与解决
2019/08/26 Javascript
原生js实现二级联动菜单
2019/11/27 Javascript
jQuery实现可以计算进制转换的计算器
2020/10/19 jQuery
创建与框架无关的JavaScript插件
2020/12/01 Javascript
[00:36]我的中国心——Serenity vs Fnatic
2018/08/21 DOTA
Python序列操作之进阶篇
2016/12/08 Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
2018/02/21 Python
ubuntu安装sublime3并配置python3环境的方法
2018/03/15 Python
python random从集合中随机选择元素的方法
2019/01/23 Python
python使用for循环计算0-100的整数的和方法
2019/02/01 Python
Python Web框架之Django框架文件上传功能详解
2019/08/16 Python
PyCharm2020.1.1与Python3.7.7的安装教程图文详解
2020/08/07 Python
python 基于wx实现音乐播放
2020/11/24 Python
Python 利用flask搭建一个共享服务器的步骤
2020/12/05 Python
世界上最好的足球商店:Unisport
2019/03/02 全球购物
中学生操行评语
2014/04/24 职场文书
2015年安全生产工作总结范文
2015/04/02 职场文书
小学教师师德培训心得体会
2016/01/09 职场文书
新课程改革心得体会
2016/01/22 职场文书
Python3接口性能测试实例代码
2021/06/20 Python