vuex提交state&&实时监听state数据的改变方法


Posted in Javascript onSeptember 16, 2018

项目背景

websocket长连接 根据指示进行四个页面之间的跳转,在各页面执行相应的逻辑处理。

项目搭建结构如下所示:

vuex提交state&&实时监听state数据的改变方法

解决方案

在四个页面外面写个父页面,router路径如下所示:

vuex提交state&&实时监听state数据的改变方法

vuex

\src\store\mutations.js

//存储到vuex里面

[WEBSOCKETDATA](state,socketdata){
 state.socketData=null;//vue监听不到数组的改变 所以清空重置一下就好咯
 state.socketData=socketdata
 }

\src\store\getters.js

export default {
 getterSocketData (state) {
 return state.socketData
 }
}

\src\store\index.js

import Vue from 'vue'
import Vuex from 'vuex'
import mutations from './mutations'
import getters from './getters'

Vue.use(Vuex)

const state = {
 socketData:{},//websocket数据
}

export default new Vuex.Store({
 state,
 mutations,
 getters
})

\src\components\index.vue

父页面

import {mapMutations,mapState} from 'vuex'
export default {
 computed:{
   ...mapState([
   'socketData',
   ])
  },
 data(){
  return{
  skip:'2',
  webdata:{
   "current_item": "111", "show_item": 'false', "cart_item_list": [],"totalPrice":7.5,"delIndexList":[],'addList':[]
  },
  }
 },
 mounted(){
  // this.initWebsocket()
  var addList=[{"sku":"1","num":"2","price":3.5,"name":'苹果0'}];
  var delIndexList=[];
  this.webdata.addList=addList;
  this.webdata.delIndexList=delIndexList;
  this.websocket_data(this.webdata)
  console.log("index1--------------------")
  console.log(this.socketData);
  setTimeout(()=>{//定时器为了模拟websocket发送数据
  var addList=[{"sku":"1","num":"2","price":3.5,"name":'苹果11'}];
  var delIndexList=[0];
  this.webdata.addList=addList;
  this.webdata.delIndexList=delIndexList;
  this.$store.commit("websocket_data",this.webdata)//必须写 要不然getter拿不到改变之后的数据
  console.log("index--------------------");
  console.log(this.socketData);
  },1000);
 },
 }

src\components\shoppingCart.vue

子页面 根据websocket传来的数据进行逻辑操作

import {mapState,mapMutations,mapGetters} from 'vuex';
export default {
 data(){
  return{
  prolength:0,
  defaultImg: 'this.src="' + require('../assets/defaultImg.png') + '"',
  productinfos: {
   "current_item": "111", "show_item": 'false', "cart_item_list": [],"totalPrice":7.5,"delIndexList":[],'addList':[]
  },
  MyMar:'',
  }
 },
 computed: {//监听socketData的变化 做页面处理
  ...mapState([
  'socketData',
  ]),
  ...mapGetters([
  'getterSocketData',
  ])
 },
  watch:{
  getterSocketData(message){//message 就是socketData
  console.log(message);//根据数据指示 进行逻辑操作
  ........................
  }
  }
}

以上这篇vuex提交state&&实时监听state数据的改变方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
pjblog修改技巧汇总
Mar 12 Javascript
js loading加载效果实现代码
Nov 24 Javascript
javascript 单例/单体模式(Singleton)
Apr 07 Javascript
非主流的textarea自增长实现js代码
Dec 20 Javascript
append和appendTo的区别以及appendChild用法
Dec 24 Javascript
使用GruntJS构建Web程序之Tasks(任务)篇
Jun 06 Javascript
node.js超时timeout详解
Nov 26 Javascript
jquery实现简洁文件上传表单样式
Nov 02 Javascript
微信小程序实现实时圆形进度条的方法示例
Feb 24 Javascript
原生JS获取元素的位置与尺寸实现方法
Oct 18 Javascript
利用百度地图API获取当前位置信息的实例
Nov 06 Javascript
vue 动态表单开发方法案例详解
Dec 02 Javascript
新手必须知的Node.js 4个JavaScript基本概念
Sep 16 #Javascript
分享5个顶级的JavaScript Ajax组件库
Sep 16 #Javascript
vuex + axios 做登录验证 并且保存登录状态的实例
Sep 16 #Javascript
vue主动刷新页面及列表数据删除后的刷新实例
Sep 16 #Javascript
vue将毫秒数转化为正常日期格式的实例
Sep 16 #Javascript
Vue filter格式化时间戳时间成标准日期格式的方法
Sep 16 #Javascript
vue 2.1.3 实时显示当前时间,每秒更新的方法
Sep 16 #Javascript
You might like
PHP开发Apache服务器配置
2015/07/15 PHP
php实现将Session写入数据库
2015/07/26 PHP
PHP中substr_count()函数获取子字符串出现次数的方法
2016/01/07 PHP
解决laravel 出现ajax请求419(unknown status)的问题
2019/09/03 PHP
PHP字符串和十六进制如何实现互相转换
2020/07/16 PHP
js 日期转换成中文格式的函数
2009/07/07 Javascript
javascript写的一个链表实现代码
2009/10/25 Javascript
js加入收藏以及使用Jquery更改透明度
2014/01/26 Javascript
返回顶部按钮响应滚动且动态显示与隐藏
2014/10/14 Javascript
jQuery 3.0十大新特性最终版发布
2016/07/14 Javascript
详解Vue中过度动画效果应用
2017/05/25 Javascript
AngularJs中$cookies简单用法分析
2019/05/30 Javascript
微信小程序批量监听输入框对按钮样式进行控制的实现代码
2019/10/12 Javascript
javaScript把其它类型转换为Number类型
2019/10/13 Javascript
在elementui中Notification组件添加点击事件实例
2020/11/11 Javascript
[01:20:37]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
在Python的Tornado框架中实现简单的在线代理的教程
2015/05/02 Python
Python中super的用法实例
2015/05/28 Python
举例讲解Python中的list列表数据结构用法
2016/03/12 Python
解析Python中的__getitem__专有方法
2016/06/27 Python
python入门基础之用户输入与模块初认识
2016/11/14 Python
在Python的一段程序中如何使用多次事件循环详解
2017/09/07 Python
python enumerate函数的使用方法总结
2017/11/15 Python
python利用sklearn包编写决策树源代码
2017/12/21 Python
Python中列表与元组的乘法操作示例
2018/02/10 Python
浅谈Python在pycharm中的调试(debug)
2018/11/29 Python
python 5个顶级异步框架推荐
2020/09/09 Python
HTML 5 标签、属性、事件及浏览器兼容性速查表 附打包下载
2012/10/20 HTML / CSS
美国玩具公司:U.S.Toy
2018/05/19 全球购物
德国富尔达运动鞋店:43einhalb
2020/12/25 全球购物
工商技校毕业生自荐信
2013/11/15 职场文书
庆祝教师节活动方案
2014/01/31 职场文书
美容院经理岗位职责
2014/04/03 职场文书
预备党员对照检查材料思想汇报
2014/09/24 职场文书
六一儿童节园长致辞
2015/07/31 职场文书
如何设置多台电脑共享打印机?多台电脑共享打印机的方法
2022/04/08 数码科技