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 相关文章推荐
Ctrl+Enter提交内容信息
Jun 26 Javascript
JQuery获取当前屏幕的高度宽度的实现代码
Jul 12 Javascript
使用javascript控制cookie显示和隐藏背景图
Feb 12 Javascript
jquery访问ashx文件示例代码
Aug 11 Javascript
url中的特殊符号有什么含义(推荐)
Jun 17 Javascript
node.js路径处理方法以及绝对路径详解
Mar 04 Javascript
你可能不知道的JSON.stringify()详解
Aug 17 Javascript
js使用highlight.js高亮你的代码
Aug 18 Javascript
浅谈node模块与npm包管理工具
Jan 03 Javascript
在vue 中使用 less的教程详解
Sep 26 Javascript
使用vue cli4.x搭建vue项目的过程详解
May 08 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
PHPMYADMIN导入数据最大为2M的解决方法
2012/04/23 PHP
深入探讨<br />和 \r\n两者有什么区别??
2013/06/05 PHP
php与java通过socket通信的实现代码
2013/10/21 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
2016/03/25 PHP
golang与php实现计算两个经纬度之间距离的方法
2016/07/22 PHP
PHP微信PC二维码登陆的实现思路
2017/07/13 PHP
Laravel第三方包报class not found的解决方法
2019/10/13 PHP
Laravel 之url参数,获取路由参数的例子
2019/10/21 PHP
Javascript base64编码实现代码
2011/12/02 Javascript
javascript 另一种图片滚动切换效果思路
2012/04/20 Javascript
JQGrid的用法解析(列编辑,添加行,删除行)
2013/11/08 Javascript
node.js中的path.normalize方法使用说明
2014/12/08 Javascript
JavaScript实现将文本框的值插入指定位置的方法
2015/08/13 Javascript
基于JavaScript实现仿京东图片轮播效果
2015/11/06 Javascript
轻松学习jQuery插件EasyUI EasyUI创建CRUD应用
2015/11/30 Javascript
基于javascript实现九宫格大转盘效果
2020/05/28 Javascript
第六篇Bootstrap表格样式介绍
2016/06/21 Javascript
Vue-cli Eslint在vscode里代码自动格式化的方法
2018/02/23 Javascript
js+springMVC 提交数组数据到后台的实例
2019/09/21 Javascript
element el-tree组件的动态加载、新增、更新节点的实现
2020/02/27 Javascript
微信小程序scroll-view点击项自动居中效果的实现
2020/03/25 Javascript
Python的条件语句与运算符优先级详解
2015/10/13 Python
python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解
2017/11/24 Python
使用python读取csv文件快速插入数据库的实例
2018/06/21 Python
在Python中使用defaultdict初始化字典以及应用方法
2018/10/31 Python
Django Rest framework权限的详细用法
2019/07/25 Python
详解Python 循环嵌套
2020/07/09 Python
解决python对齐错误的方法
2020/07/16 Python
python 基于selenium实现鼠标拖拽功能
2020/12/24 Python
python实现简单文件读写函数
2021/02/25 Python
亚洲最大的眼镜批发商和零售商之一:Glasseslit
2018/10/08 全球购物
副厂长岗位职责
2014/02/02 职场文书
学生会部长竞聘书
2014/03/31 职场文书
学校教师读书活动总结
2014/07/08 职场文书
史上最全的军训拉歌口号
2015/12/25 职场文书
实现一个简单得数据响应系统
2021/11/11 Javascript