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操作JSON实例代码
Feb 09 Javascript
Json对象替换字符串占位符实现代码
Nov 17 Javascript
jQuery语法高亮插件支持各种程序源代码语法着色加亮
Apr 27 Javascript
Jquery弹出层插件ThickBox的使用方法
Dec 09 Javascript
Js+php实现异步拖拽上传文件
Jun 23 Javascript
jQuery Dialog对话框事件用法实例分析
May 10 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐)
Jun 23 Javascript
js获取元素的偏移量offset简单方法(必看)
Jul 05 Javascript
vue动态路由实现多级嵌套面包屑的思路与方法
Aug 16 Javascript
利用es6 new.target来对模拟抽象类的方法
May 10 Javascript
JavaScript函数式编程(Functional Programming)纯函数用法分析
May 22 Javascript
如何让vue长列表快速加载
Mar 29 Vue.js
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函数array_merge用法一例(合并同类数组)
2013/02/03 PHP
php switch语句多个值匹配同一代码块的实现
2014/03/03 PHP
php之可变函数的实例详解
2017/09/13 PHP
使用PHP+MySql实现微信投票功能实例代码
2017/09/29 PHP
Javascript中的变量使用说明
2010/05/18 Javascript
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
一个简单的瀑布流效果(主体形式自写)
2013/05/27 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
2013/12/19 Javascript
使用delegate方法为一个tr标签加一个链接
2014/06/27 Javascript
JavaScript jQuery 中定义数组与操作及jquery数组操作
2015/12/18 Javascript
深入浅析JavaScript中with语句的理解
2016/05/12 Javascript
JavaScript的变量声明提升问题浅析(Hoisting)
2016/11/30 Javascript
漂亮实用的页面loading(加载)封装代码
2017/02/03 Javascript
Node.js使用Koa搭建 基础项目
2018/01/08 Javascript
vue.js通过路由实现经典的三栏布局实例代码
2018/07/08 Javascript
JS闭包原理与应用经典示例
2018/12/20 Javascript
Vue.js中Line第三方登录api的实现代码
2020/06/29 Javascript
vue实现登录、注册、退出、跳转等功能
2020/12/23 Vue.js
[02:49]2014DOTA2电竞也是体育项目! 势要把荣誉带回中国!
2014/07/20 DOTA
Python语言的12个基础知识点小结
2014/07/10 Python
python图像处理入门(一)
2019/04/04 Python
python logging日志模块原理及操作解析
2019/10/12 Python
解决Tensorflow 内存泄露问题
2020/02/05 Python
Python 操作SQLite数据库的示例
2020/10/16 Python
Html5大文件断点续传实现方法
2015/12/05 HTML / CSS
基于Html5实现的语音搜索功能
2019/05/13 HTML / CSS
.NET现在共支持多少种语言
2014/02/26 面试题
大学校园生活自我鉴定
2014/01/13 职场文书
高二生物教学反思
2014/01/27 职场文书
我们的节日清明节活动总结
2014/04/30 职场文书
充分就业社区汇报材料
2014/05/07 职场文书
技术经济专业求职信
2014/09/03 职场文书
地道战观后感
2015/06/04 职场文书
2019年警察入党转正申请书最新范文
2019/09/03 职场文书
Python实现Telnet自动连接检测密码的示例
2021/04/16 Python
解决Mysql报错 Table 'mysql.user' doesn't exist
2022/05/06 MySQL