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读取XML文件数据并显示的实现代码
Dec 16 Javascript
jQuery 类twitter的文本字数限制带提示效果插件
Apr 16 Javascript
javascript之AJAX框架使用说明
Apr 24 Javascript
JQuery EasyUI 加载两次url的原因分析及解决方案
Aug 18 Javascript
node.js程序作为服务并在windows下开机自启动(用forever)
Mar 29 Javascript
微信小程序实现轮播图效果
Sep 07 Javascript
vue2.0之多页面的开发的示例
Jan 30 Javascript
详解Express笔记之动态渲染HTML(新手入坑)
Dec 13 Javascript
详解js动态获取浏览器或页面等容器的宽高
Mar 13 Javascript
JavaScript链式调用原理与实现方法详解
May 16 Javascript
JS如何定义用字符串拼接的变量
Jul 11 Javascript
详解JavaScript中的执行上下文及调用堆栈
Apr 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
BBS(php & mysql)完整版(七)
2006/10/09 PHP
破解图片防盗链的代码(asp/php)测试通过
2010/07/02 PHP
腾讯微博提示missing parameter errorcode 102 错误的解决方法
2014/12/22 PHP
php相对当前文件include其它文件的方法
2015/03/13 PHP
CI框架入门之MVC简单示例
2016/11/21 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
2017/04/18 PHP
将jQuery应用于login页面的问题及解决
2009/10/17 Javascript
Jquery判断IE6等浏览器的代码
2011/04/05 Javascript
用jquery模仿的a的title属性(兼容ie6/7)
2013/01/21 Javascript
文本框水印提示效果的简单实现代码
2014/02/22 Javascript
禁用Enter键表单自动提交实现代码
2014/05/22 Javascript
jQuery实现鼠标悬停背景翻转的黑色导航菜单代码
2015/09/14 Javascript
JavaScript仿微博发布信息案例
2016/11/16 Javascript
vue双向绑定的简单实现
2016/12/22 Javascript
JavaScript获取select中text值的方法
2017/02/13 Javascript
js获取元素下的第一级子元素的方法(推荐)
2017/03/05 Javascript
详解打造 Vue.js 可复用组件
2017/03/24 Javascript
vue.js单页面应用实例的简单实现
2017/04/10 Javascript
axios的拦截请求与响应方法
2018/08/11 Javascript
vue项目中axios请求网络接口封装的示例代码
2018/12/18 Javascript
element-ui table行点击获取行索引(index)并利用索引更换行顺序
2020/02/27 Javascript
JS XMLHttpRequest原理与使用方法深入详解
2020/04/30 Javascript
VSCode搭建Vue项目的方法
2020/04/30 Javascript
vue输入框使用模糊搜索功能的实现代码
2020/05/26 Javascript
[02:23]2018DOTA2亚洲邀请赛趣味视频——反应测试
2018/04/04 DOTA
python获取一组汉字拼音首字母的方法
2015/07/01 Python
python如何以表格形式打印输出的方法示例
2019/06/21 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
2020/02/25 Python
CSS3 实现雷达扫描图的示例代码
2020/09/21 HTML / CSS
Desigual美国官方网站:西班牙服装品牌
2019/03/29 全球购物
竞聘演讲稿
2014/04/24 职场文书
2014年个人总结范文
2015/03/09 职场文书
2015年度企业工作总结
2015/05/21 职场文书
任长霞观后感
2015/06/16 职场文书
《鸡兔同笼》教学反思
2016/02/19 职场文书
Nginx域名转发https访问的实现
2021/03/31 Servers