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 相关文章推荐
网页广告中JS代码的信息监听示例
Apr 02 Javascript
jquery简单图片切换显示效果实现方法
Jan 14 Javascript
javascript实现表单提交后,提交按钮不可用的方法
Apr 18 Javascript
jQuery实现元素拖拽并cookie保存顺序的方法
Feb 20 Javascript
js实现StringBuffer的简单实例
Sep 02 Javascript
javascript编程实现栈的方法详解【经典数据结构】
Apr 11 Javascript
jQuery滚动条美化插件nicescroll简单用法示例
Apr 18 jQuery
vue滚动tab跟随切换效果
Jun 29 Javascript
微信小程序实现图片选择并预览功能
Jul 25 Javascript
jquery validate 实现动态增加/删除验证规则操作示例
Oct 28 jQuery
Vue生命周期activated之返回上一页不重新请求数据操作
Jul 26 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
Oct 30 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/02/08 PHP
关于php正则匹配汉字的方法介绍
2013/04/25 PHP
探讨捕获php错误信息方法的详解
2013/06/09 PHP
PHP内核探索:变量存储与类型使用说明
2014/01/30 PHP
thinkphp3.2.2前后台公用类架构问题分析
2014/11/25 PHP
PHP实现json_decode不转义中文的方法
2017/05/20 PHP
JavaScript中的new的使用方法与注意事项
2007/05/16 Javascript
jQuery表格行换色的三种实现方法
2011/06/27 Javascript
jquery animate实现鼠标放上去显示离开隐藏效果
2013/07/21 Javascript
node.js中的http.request.end方法使用说明
2014/12/10 Javascript
jquery实现标签上移、下移、置顶
2015/04/26 Javascript
jquery实现定时自动轮播特效
2015/12/10 Javascript
JavaScript设计模式初探
2016/01/07 Javascript
Bootstrap table 定制提示语的加载过程
2017/02/20 Javascript
整理关于Bootstrap过渡动画的慕课笔记
2017/03/29 Javascript
Vue+webpack项目基础配置教程
2018/02/12 Javascript
对angularJs中自定义指令replace的属性详解
2018/10/09 Javascript
浅谈Javascript常用正则表达式应用
2019/03/08 Javascript
js实现web调用摄像头 js截取视频画面
2019/04/21 Javascript
新手入门带你学习JavaScript引擎运行原理
2019/06/24 Javascript
微信小程序获取用户绑定手机号方法示例
2019/07/21 Javascript
js实现橱窗展示效果
2020/01/11 Javascript
跟老齐学Python之print详解
2014/09/28 Python
给Python初学者的一些编程技巧
2015/04/03 Python
Python利用ansible分发处理任务
2015/08/04 Python
浅谈Python2.6和Python3.0中八进制数字表示的区别
2017/04/28 Python
Python和Java的语法对比分析语法简洁上python的确完美胜出
2019/05/10 Python
python使用yaml 管理selenium元素的示例
2020/12/01 Python
日本高岛屋百货购物网站:TAKASHIMAYA
2019/03/24 全球购物
路政管理专业推荐信
2013/11/11 职场文书
大学生创业策划书
2014/02/02 职场文书
医学专业应届生的自我评价
2014/02/28 职场文书
中学生社会实践活动总结
2014/07/03 职场文书
简单的个人租房协议书范本
2014/11/26 职场文书
表扬通报怎么写
2015/01/16 职场文书
个人销售励志奋斗口号
2019/12/05 职场文书