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 相关文章推荐
JavaScript 数组运用实现代码
Apr 13 Javascript
jQuery EasyUI API 中文文档 - EasyLoader 加载器
Sep 29 Javascript
随窗体滑动的小插件sticky源码
Jun 21 Javascript
jQuery-ui引入后Vs2008的无智能提示问题解决方法
Feb 10 Javascript
用简洁的jQuery方法toggleClass实现隔行换色
Oct 22 Javascript
javascript定时器完整实例
Feb 10 Javascript
jQuery实现的鼠标滑过弹出放大图片特效
Jan 08 Javascript
JS实现的简单拖拽功能示例
Mar 13 Javascript
Web前端框架Angular4.0.0 正式版发布
Mar 28 Javascript
Javacript中自定义的map.js  的方法
Nov 26 Javascript
解析Vue 2.5的Diff算法
Nov 28 Javascript
JS实现的邮箱提示补全效果示例
Jan 30 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 zip扩展Linux下安装过程分享
2014/05/05 PHP
几道坑人的PHP面试题 试试看看你会不会也中招
2014/08/19 PHP
php获取开始与结束日期之间所有日期的方法
2016/11/29 PHP
总结的一些PHP开发中的tips(必看篇)
2017/03/24 PHP
laravel http 自定义公共验证和响应的方法
2019/09/29 PHP
文字幻灯片
2006/06/26 Javascript
flexigrid 类似ext grid的JS表格代码
2010/07/17 Javascript
jQeury淡入淡出需要注意的问题
2010/09/08 Javascript
整理8个很棒的 jQuery 倒计时插件和教程
2011/12/12 Javascript
jQuery实现鼠标滑过遮罩并高亮显示效果
2013/07/16 Javascript
jquery实现metro效果示例代码
2013/09/06 Javascript
JS中typeof与instanceof之间的区别总结
2013/11/14 Javascript
jquery实现个人中心导航菜单效果和美观都非常不错
2014/09/02 Javascript
jQuery实现鼠标悬停背景翻转的黑色导航菜单代码
2015/09/14 Javascript
详解JavaScript对Date对象的操作问题(生成一个倒数7天的数组)
2015/10/01 Javascript
Javascript闭包实例详解
2015/11/29 Javascript
AngularJS 最常用的功能汇总
2016/02/17 Javascript
JS生成某个范围的随机数【四种情况详解】
2016/04/20 Javascript
AngularJS实现给动态生成的元素绑定事件的方法
2016/12/14 Javascript
微信小程序 跳转传参数与传对象详解及实例代码
2017/03/14 Javascript
浅谈关于angularJs中使用$.ajax的注意点
2017/08/12 Javascript
jQuery图片缩放插件smartZoom使用实例详解
2017/08/25 jQuery
C#实现将一个字符转换为整数
2017/12/12 Javascript
微信小程序之判断页面滚动方向的示例代码
2018/08/30 Javascript
js cavans实现静态滚动弹幕
2020/05/21 Javascript
小小聊天室Python代码实现
2016/08/17 Python
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
2019/07/04 Python
Python pathlib模块使用方法及实例解析
2020/10/05 Python
python 实现图片裁剪小工具
2021/02/02 Python
python中zip()函数遍历多个列表方法
2021/02/18 Python
土地转让协议书
2014/09/27 职场文书
2014大学辅导员工作总结
2014/12/02 职场文书
六一儿童节主持开场白
2015/05/28 职场文书
会计实训总结范文
2015/08/03 职场文书
2016学习全国教书育人楷模先进事迹心得体会
2016/01/21 职场文书
Mysql数据库按时间点恢复实战记录
2021/06/30 MySQL