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必备 api中英文对照的chm手册 下载
May 03 Javascript
jQuery Ajax文件上传(php)
Jun 16 Javascript
JQuery 确定css方框模型(盒模型Box Model)
Jan 22 Javascript
javascript基础知识大集锦(二) 推荐收藏
Jan 13 Javascript
html的DOM中Event对象onblur事件用法实例
Jan 21 Javascript
JS实现自动固定顶部的悬浮菜单栏效果
Sep 16 Javascript
jQuery实现简单的图片查看器
Sep 11 Javascript
JS ES6中setTimeout函数的执行上下文示例
Apr 27 Javascript
node使用promise替代回调函数
May 07 Javascript
详解基于Vue cli生成的Vue项目的webpack4升级
Jun 19 Javascript
jQuery实现鼠标移入移出事件切换功能示例
Sep 06 jQuery
vue数据响应式原理知识点总结
Feb 16 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
第十一节 重载 [11]
2006/10/09 PHP
php微信公众号开发之关键词回复
2018/10/20 PHP
php新建文件的方法实例
2019/09/26 PHP
JavaScript表格常用操作方法汇总
2015/04/15 Javascript
借助FileReader实现将文件编码为Base64后通过AJAX上传
2015/12/24 Javascript
js跨域资源共享 基础篇
2016/07/02 Javascript
js简单获取表单中单选按钮值的方法
2016/08/23 Javascript
JQuery 动态生成Table表格实例代码
2016/12/02 Javascript
微信小程序中单位rpx和rem的使用
2016/12/06 Javascript
深入浅析Vue.js中 computed和methods不同机制
2018/03/22 Javascript
JS中this的指向以及call、apply的作用
2018/05/06 Javascript
JS获取指定月份的天数两种实现方法
2018/06/22 Javascript
vuejs前后端数据交互之从后端请求数据的实例
2018/08/11 Javascript
关于vue-cli 3配置打包优化要点(推荐)
2019/04/22 Javascript
解决layUI的页面显示不全的问题
2019/09/20 Javascript
Vue+elementui 实现复杂表头和动态增加列的二维表格功能
2019/09/23 Javascript
详解从vue-loader源码分析CSS Scoped的实现
2019/09/23 Javascript
vue+webpack 更换主题N种方案优劣分析
2019/10/28 Javascript
python动态参数用法实例分析
2015/05/25 Python
使用Python编写简单的画图板程序的示例教程
2015/12/08 Python
python psutil库安装教程
2018/03/19 Python
numpy基础教程之np.linalg
2019/02/12 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
2019/11/11 Python
将tf.batch_matmul替换成tf.matmul的实现
2020/06/18 Python
Python+Appium实现自动化清理微信僵尸好友的方法
2021/02/04 Python
整理HTML5中支持的URL编码与字符编码
2016/02/23 HTML / CSS
localStorage、sessionStorage使用总结
2017/11/17 HTML / CSS
澳大利亚最大的网上油画销售画廊:Direct Art Australia
2018/04/15 全球购物
工程类专业自荐信范文
2014/03/09 职场文书
机关单位动员会主持词
2014/03/20 职场文书
学校党的群众路线教育实践活动整改措施
2014/10/25 职场文书
护士医德考评自我评价
2015/03/03 职场文书
体育教师教学随笔
2015/08/15 职场文书
先进基层党组织事迹材料2016
2016/02/29 职场文书
三年级作文之小小梦想
2019/12/06 职场文书
Python实现数据的序列化操作详解
2022/07/07 Python