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系列(9) 根本没有“JSON对象”这回事!
Jan 15 Javascript
提交表单时执行func方法实现代码
Mar 17 Javascript
javascript异步处理工作机制详解
Apr 13 Javascript
JavaScript子窗口调用父窗口变量和函数的方法
Oct 09 Javascript
基于JavaScript实现随机颜色输入框
Dec 10 Javascript
react-router browserHistory刷新页面404问题解决方法
Dec 29 Javascript
Ionic学习日记实现验证码倒计时
Feb 08 Javascript
webpack打包node.js后端项目的方法
Mar 10 Javascript
Node 升级到最新稳定版的方法分享
May 17 Javascript
webpack4.x打包过程详解
Jul 18 Javascript
详解Vue.js在页面加载时执行某个方法
Nov 20 Javascript
JavaScript碰撞检测原理及其实现代码
Mar 12 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继承的一个应用
2011/09/06 PHP
自己在做项目过程中学到的PHP知识收集
2012/08/20 PHP
php无限遍历目录示例
2014/02/21 PHP
Laravel中使用阿里云OSS Composer包分享
2015/02/10 PHP
使用PHP处理数据库数据如何将数据返回客户端并显示当前状态
2016/02/16 PHP
php基于jquery的ajax技术传递json数据简单实例
2016/04/15 PHP
php图形jpgraph操作实例分析
2017/02/22 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
2019/07/26 PHP
探寻JavaScript中this指针指向
2016/04/23 Javascript
Jquery为DIV添加click事件的简单实例
2016/06/02 Javascript
简单理解js的prototype属性及使用
2016/12/07 Javascript
jquery 正整数数字校验正则表达式
2017/01/10 Javascript
完美实现js拖拽效果 return false用法详解
2017/07/28 Javascript
vue获取当前点击的元素并传值的实例
2018/03/09 Javascript
vue 属性拦截实现双向绑定的实例代码
2018/10/24 Javascript
node中使用es6/7/8(支持性与性能)
2019/03/28 Javascript
Vue项目路由刷新的实现代码
2019/04/17 Javascript
[15:58]DOTA2国际邀请赛采访专栏:Tongfu.Sansheng&KingJ,DK.rOtk
2013/08/08 DOTA
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
用Python的Flask框架结合MySQL写一个内存监控程序
2015/11/07 Python
Python Sql数据库增删改查操作简单封装
2016/04/18 Python
Python实现Pig Latin小游戏实例代码
2018/02/02 Python
Python cookbook(数据结构与算法)根据字段将记录分组操作示例
2018/03/19 Python
django js实现部分页面刷新的示例代码
2018/05/28 Python
python实现五子棋小游戏
2020/03/25 Python
Python读写文件模式和文件对象方法实例详解
2019/09/17 Python
Python合并2个字典成1个新字典的方法(9种)
2019/12/19 Python
Python关于反射的实例代码分享
2020/02/20 Python
HTML5之SVG 2D入门2—图形绘制(基本形状)介绍及使用
2013/01/30 HTML / CSS
微软香港官网及网上商店:Microsoft HK
2016/09/01 全球购物
法国娇韵诗官方旗舰店:Clarins是来自法国的天然护肤品牌
2018/06/30 全球购物
客服实习的个人自我鉴定
2013/10/20 职场文书
《盘古开天地》教学反思
2014/02/28 职场文书
2014年巴西世界杯口号
2014/06/05 职场文书
手把手教你制定暑期学习计划,让你度过充实的暑假
2019/08/22 职场文书
Java 常见的限流算法详细分析并实现
2022/04/07 Java/Android