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 相关文章推荐
ASP.NET jQuery 实例6 (实现CheckBoxList成员全选或全取消)
Jan 13 Javascript
javascript实现TreeView 无刷新展开的实例代码
Jul 13 Javascript
解析JavaScript中点号“.”的多义性
Dec 02 Javascript
Jquery动态替换div内容及动态展示的方法
Jan 23 Javascript
Bootstrap每天必学之弹出框(Popover)插件
Apr 25 Javascript
jQuery插件ajaxFileUpload异步上传文件
Oct 19 Javascript
vue-ajax小封装实例
Sep 18 Javascript
jQuery实现下拉菜单动态添加数据点击滑出收起其他功能
Jun 14 jQuery
对vue中v-if的常见使用方法详解
Sep 28 Javascript
vue项目初始化到登录login页面的示例
Oct 31 Javascript
聊聊Vue中provide/inject的应用详解
Nov 10 Javascript
微信小程序实现分页加载效果
Nov 19 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 购物车的例子
2009/05/04 PHP
Notice: Undefined index: page in E:\PHP\test.php on line 14
2010/11/02 PHP
php封装的page分页类完整实例
2016/10/18 PHP
PHP实现验证码校验功能
2017/11/16 PHP
JavaScript DOM学习第一章 W3C DOM简介
2010/02/19 Javascript
document.compatMode的CSS1compat使用介绍
2014/04/03 Javascript
jQuery实现倒计时按钮功能代码分享
2014/09/03 Javascript
一波JavaScript日期判断脚本分享
2016/03/06 Javascript
jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)
2016/05/27 Javascript
bootstrap滚动监控器使用方法解析
2017/01/13 Javascript
ES6中Math对象新增的方法实例详解
2017/04/25 Javascript
详解Vue中使用Echarts的两种方式
2018/07/03 Javascript
微信小程序自定义底部弹出框
2020/11/16 Javascript
js cavans实现静态滚动弹幕
2020/05/21 Javascript
Javascript Symbol原理及使用方法解析
2020/10/22 Javascript
vue el-upload上传文件的示例代码
2020/12/21 Vue.js
[00:13]天涯墨客二技能展示
2018/08/25 DOTA
在Python的Django框架中加载模版的方法
2015/07/16 Python
python 捕获shell脚本的输出结果实例
2017/01/04 Python
python入门教程 python入门神图一张
2018/03/05 Python
python命令行参数用法实例分析
2019/06/25 Python
Python Scrapy框架第一个入门程序示例
2020/02/05 Python
Python如何根据时间序列数据作图
2020/05/12 Python
实例教程 纯CSS3打造非常炫的加载动画效果
2014/11/05 HTML / CSS
利用Storage Event实现页面间通信的示例代码
2018/07/26 HTML / CSS
白俄罗斯在线大型超市:e-dostavka.by
2019/07/25 全球购物
品恩科技软件测试面试题
2014/10/26 面试题
酒店副总经理岗位职责范本
2014/02/04 职场文书
学生保证书范文
2014/04/28 职场文书
食品安全汇报材料
2014/08/18 职场文书
《微笑着面对生活》优秀演讲稿范文
2014/09/23 职场文书
应收账款管理制度
2015/08/06 职场文书
干部理论学习心得体会
2016/01/21 职场文书
 Redis 串行生成顺序编码的方法实现
2022/04/03 Redis
我的收音机情缘
2022/04/05 无线电
mysql数据库实现设置字段长度
2022/06/10 MySQL