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 相关文章推荐
url 特殊字符 传递参数解决方法
Jan 01 Javascript
js DataSet数据源处理代码
Mar 29 Javascript
jquery 日期分离成年月日的代码
May 14 Javascript
很好用的js日历算法详细代码
Mar 07 Javascript
Javascript中的Array数组对象详谈
Mar 03 Javascript
基于jquery固定于顶部的导航响应浏览器滚动条事件
Nov 02 Javascript
node.js中的buffer.toJSON方法使用说明
Dec 14 Javascript
AngularJS基础知识笔记之表格
May 10 Javascript
JS实现字符串转驼峰格式的方法
Dec 16 Javascript
基于jQuery对象和DOM对象和字符串之间的转化实例
Aug 08 jQuery
JavaScript对象的浅拷贝与深拷贝实例分析
Jul 25 Javascript
js实现带有动画的返回顶部
Aug 09 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的栏目导航程序
2006/10/09 PHP
使用PHPExcel导出Excel表
2018/09/08 PHP
javascript prototype 原型链
2009/03/12 Javascript
12个非常有创意的JavaScript小游戏
2010/03/18 Javascript
JS 毫秒转时间示例代码
2013/09/22 Javascript
12306验证码破解思路分享
2015/03/25 Javascript
js简单的点击返回顶部效果实现方法
2015/04/10 Javascript
在AngularJS应用中实现一些动画效果的代码
2015/06/18 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
2016/01/12 Javascript
JavaScript中style.left与offsetLeft的使用及区别详解
2016/06/08 Javascript
前端微信支付js代码
2016/07/25 Javascript
AngularJS基础 ng-repeat 指令简单示例
2016/08/03 Javascript
jQuery控制控件文本的长度的操作方法
2016/12/05 Javascript
javascript基本数据类型及类型检测常用方法小结
2016/12/14 Javascript
脚本div实现拖放功能(两种)
2017/02/13 Javascript
jquery实现的简单轮播图功能【适合新手】
2018/08/17 jQuery
vue、react等单页面项目部署到服务器的方法及vue和react的区别
2018/09/29 Javascript
详解vuex持久化插件解决浏览器刷新数据消失问题
2019/04/15 Javascript
JS动态图片的实现方法完整示例
2020/01/13 Javascript
Python中实现常量(Const)功能
2015/01/28 Python
Python的Tornado框架的异步任务与AsyncHTTPClient
2016/06/27 Python
Django在win10下的安装并创建工程
2017/11/20 Python
python3中的md5加密实例
2018/05/29 Python
pytorch 修改预训练model实例
2020/01/18 Python
解决tensorflow打印tensor有省略号的问题
2020/02/04 Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
2020/02/09 Python
python模拟点击网页按钮实现方法
2020/02/25 Python
浅谈python输出列表元素的所有排列形式
2020/02/26 Python
Python脚本如何在bilibili中查找弹幕发送者
2020/06/04 Python
使用keras实现Precise, Recall, F1-socre方式
2020/06/15 Python
Python开发.exe小工具的详细步骤
2021/01/27 Python
大学生个人自荐信
2014/02/24 职场文书
2014年护士个人工作总结
2014/11/11 职场文书
教师工作能力自我评价
2015/03/04 职场文书
2015年度环卫处工作总结
2015/07/24 职场文书
解析在浏览器地址栏输入一个URL后发生了什么
2021/06/21 Servers