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 select的操作实现代码
May 06 Javascript
JavaScript NodeTree导航栏(菜单项JSON类型/自制)
Feb 01 Javascript
jquery中获取id值方法小结
Sep 22 Javascript
js 截取或者替换字符串中的数字实现方法
Jun 13 Javascript
three.js实现围绕某物体旋转
Jan 25 Javascript
vue脚手架vue-cli的学习使用教程
Jun 06 Javascript
详解React 的几种条件渲染以及选择
Oct 23 Javascript
elementUI select组件使用及注意事项详解
May 29 Javascript
Vue中keep-alive 实现后退不刷新并保持滚动位置
Mar 17 Javascript
简单了解Vue + ElementUI后台管理模板
Apr 07 Javascript
vue中jsonp插件的使用方法示例
Sep 10 Javascript
OpenLayers3实现地图鹰眼以及地图比例尺的添加
Sep 25 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在项目中寻找代码的坏味道(综艺命名)
2012/07/19 PHP
php ci 获取表单中多个同名input元素值的代码
2016/03/25 PHP
javascript下给元素添加事件的方法与代码
2007/08/13 Javascript
一个刚完成的layout(拖动流畅,不受iframe影响)
2007/08/17 Javascript
代码触发js事件(click、change)示例应用
2013/12/13 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
2014/03/10 Javascript
JQuery解析HTML、JSON和XML实例详解
2014/03/29 Javascript
jQuery增加自定义函数的方法
2015/07/18 Javascript
解决JS无法调用Controller问题的方法
2015/12/31 Javascript
学习javascript文件加载优化
2016/02/19 Javascript
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
2016/08/02 Javascript
ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案
2016/11/23 Javascript
微信小程序canvas写字板效果及实例
2017/06/15 Javascript
详解webpack打包第三方类库的正确姿势
2018/10/20 Javascript
详解微信小程序与内嵌网页交互实现支付功能
2018/10/22 Javascript
基于vue的验证码组件的示例代码
2019/01/22 Javascript
vue router导航守卫(router.beforeEach())的使用详解
2019/04/19 Javascript
微信小程序非跳转式组件授权登录的方法示例
2019/05/22 Javascript
js实现一款简单踩白块小游戏(曾经很火)
2019/12/02 Javascript
Python实现曲线点抽稀算法的示例
2017/10/12 Python
详解Python的hasattr() getattr() setattr() 函数使用方法
2018/07/09 Python
python学习之hook钩子的原理和使用
2018/10/25 Python
pytorch 调整某一维度数据顺序的方法
2018/12/08 Python
Python多进程入门、分布式进程数据共享实例详解
2019/06/03 Python
基于Python实现拆分和合并GIF动态图
2019/10/22 Python
Python字典底层实现原理详解
2019/12/18 Python
处理textarea中的换行和空格
2019/12/12 HTML / CSS
巴西体育用品商店:Lojão dos Esportes
2018/07/21 全球购物
马来西亚领先的在线礼品店:Giftr
2018/08/23 全球购物
几个人围成一圈的问题
2013/09/26 面试题
廉政承诺书
2015/01/19 职场文书
小学新教师个人总结
2015/02/05 职场文书
无罪辩护词范文
2015/05/21 职场文书
Mysql中调试存储过程最简单的方法
2021/06/30 MySQL
Golang并发工具Singleflight
2022/05/06 Golang
pandas中pd.groupby()的用法详解
2022/06/16 Python