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 相关文章推荐
jquery(live)中File input的change方法只起一次作用的解决办法
Oct 21 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
Sep 09 Javascript
javascript获取文档坐标和视口坐标
May 26 Javascript
JavaScript之cookie技术详解
Nov 18 Javascript
JavaScript提高加载和执行效率的方法
Feb 03 Javascript
详解vue项目中实现图片裁剪功能
Jun 07 Javascript
浅谈layui里的上传控件问题
Sep 26 Javascript
vue-dplayer 视频播放器实例代码
Nov 08 Javascript
JavaScript canvas实现雪花随机动态飘落
Feb 08 Javascript
React+EggJs实现断点续传的示例代码
Jul 07 Javascript
基于JS实现计算24点算法代码实例解析
Jul 23 Javascript
如何通过JS实现日历简单算法
Oct 14 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的栏目导航程序
2006/10/09 PHP
PHP高级OOP技术演示
2009/08/27 PHP
第三章 php操作符与控制结构代码
2011/12/30 PHP
PHP中去掉字符串首尾空格的方法
2012/05/19 PHP
PHP统计目录大小的自定义函数分享
2014/11/18 PHP
PHP使用strtotime计算两个给定日期之间天数的方法
2015/03/18 PHP
php获取一定范围内取N个不重复的随机数
2016/05/28 PHP
浅谈php常用的7大框架的优缺点
2020/07/20 PHP
记录几个javascript有关的小细节
2007/04/02 Javascript
node.js 一个简单的页面输出实现代码
2012/03/07 Javascript
js制作的鼠标悬浮时产生的下拉框效果
2012/10/27 Javascript
仿百度的关键词匹配搜索示例
2013/09/25 Javascript
JS实现选项卡实例详解
2015/11/17 Javascript
Bootstrap每天必学之基础排版
2015/11/20 Javascript
dedecms页面如何获取会员状态的实例代码
2016/03/15 Javascript
window.open打开窗口被拦截的快速解决方法
2016/08/04 Javascript
清除js缓存的多种方法总结
2016/12/09 Javascript
详谈Angular 2+ 的表单(一)之模板驱动型表单
2017/04/25 Javascript
微信小程序 wx:for的使用实例详解
2017/04/27 Javascript
Bootstrap实现的标签页内容切换显示效果示例
2017/05/25 Javascript
AngularJS实现的获取焦点及失去焦点时的表单验证功能示例
2017/10/25 Javascript
JavaScript常见事件对象与操作实例总结
2019/01/05 Javascript
js prototype深入理解及应用实例分析
2019/11/25 Javascript
如何在vue 中引入使用jquery
2020/11/10 jQuery
使用Python写CUDA程序的方法
2017/03/27 Python
python实现决策树分类算法
2017/12/21 Python
python 处理string到hex脚本的方法
2018/10/26 Python
python 同时读取多个文件的例子
2019/07/16 Python
导入tensorflow时报错:cannot import name 'abs'的解决
2019/10/10 Python
python实现宿舍管理系统
2019/11/22 Python
css3使用animation属性实现炫酷效果(推荐)
2020/02/04 HTML / CSS
意大利珠宝店:Luxury Zone
2019/01/05 全球购物
高中生学习的自我评价
2013/12/14 职场文书
股权转让意向书
2014/04/01 职场文书
离职保密承诺书
2014/05/28 职场文书
使用canvas实现雪花飘动效果的示例代码
2021/03/30 HTML / CSS