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 相关文章推荐
网页自动跳转代码收集
Sep 27 Javascript
js获取事件源及触发该事件的对象
Oct 24 Javascript
使用JS CSS去除IE链接虚线框的三种方法
Nov 14 Javascript
javascript实现当前页导航激活的方法
Feb 27 Javascript
jQuery预加载图片常用方法
Jun 15 Javascript
javaScript中Math()函数注意事项
Jun 18 Javascript
jQuery带时间的日期控件代码分享
Aug 26 Javascript
Bootstrap CSS组件之导航条(navbar)
Dec 17 Javascript
jQuery EasyUI tree增加搜索功能的实现方法
Apr 27 jQuery
js获取元素的偏移量offset简单方法(必看)
Jul 05 Javascript
jquery 通过ajax请求获取后台数据显示在表格上的方法
Aug 08 jQuery
bootstrap table.js动态填充单元格数据的多种方法
Jul 18 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 函数使用方法与函数定义方法
2010/05/09 PHP
PHP-Fcgi下PHP的执行时间设置方法
2013/08/02 PHP
php目录遍历函数opendir用法实例
2014/11/20 PHP
JavaScript 动态创建VML的方法
2009/10/14 Javascript
使表格的标题列可左右拉伸jquery插件封装
2014/11/24 Javascript
JavaScript中的eval()函数使用介绍
2014/12/31 Javascript
js实现微信分享代码
2020/10/11 Javascript
浅谈JavaScript的计时器对象
2016/12/26 Javascript
vue实现添加标签demo示例代码
2017/01/21 Javascript
JS实现PC手机端和嵌入式滑动拼图验证码三种效果
2017/02/15 Javascript
Node.js五大应用性能技巧小结(必须收藏)
2017/08/09 Javascript
js html实现计算器功能
2018/11/13 Javascript
JS合并两个数组的3种方法详解
2019/10/24 Javascript
详解javascript中var与ES6规范中let、const区别与用法
2020/01/11 Javascript
用js限制网页只在微信浏览器中打开(或者只能手机端访问)
2020/12/24 Javascript
Python多层嵌套list的递归处理方法(推荐)
2016/06/08 Python
详解Python中heapq模块的用法
2016/06/28 Python
python如何拆分含有多种分隔符的字符串
2018/03/20 Python
python实现爬取图书封面
2018/07/05 Python
在python 中split()使用多符号分割的例子
2019/07/15 Python
一款纯css3实现的响应式导航
2014/10/31 HTML / CSS
利用SVG和CSS3来实现一个炫酷的边框动画
2015/07/22 HTML / CSS
美国领先的户外服装与装备用品店:Moosejaw
2016/08/25 全球购物
理肤泉俄罗斯官网:La Roche-Posay俄罗斯
2018/07/24 全球购物
高中毕业生生活的自我评价
2013/12/08 职场文书
群众路线剖析材料
2014/02/02 职场文书
读书活动实施方案
2014/03/10 职场文书
信息合作协议书
2014/10/09 职场文书
2015年人力资源部工作总结
2015/04/30 职场文书
民政局未婚证明
2015/06/15 职场文书
团结友爱主题班会
2015/08/13 职场文书
社区干部培训心得体会
2016/01/06 职场文书
企业管理不到位检讨书
2019/06/27 职场文书
python基于tkinter制作下班倒计时工具
2021/04/28 Python
python b站视频下载的五种版本
2021/05/27 Python
Python类方法总结讲解
2021/07/26 Python