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 相关文章推荐
JS 自定义函数缺省值的设置方法
May 05 Javascript
javascript实现漂亮的拖动层,窗口拖拽特效
Apr 24 Javascript
跟我学习javascript的隐式强制转换
Nov 16 Javascript
jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击
Jan 22 Javascript
完美实现js焦点轮播效果(二)(图片可滚动)
Mar 07 Javascript
详解AngularJS 模块化
Jun 14 Javascript
微信小程序 websocket 实现SpringMVC+Spring+Mybatis
Aug 04 Javascript
Node.js readline 逐行读取、写入文件内容的示例
Mar 01 Javascript
vue中v-model的应用及使用详解
Jun 27 Javascript
Node.js一行代码实现静态文件服务器的方法步骤
May 07 Javascript
Vue页面跳转传递参数及接收方式
Sep 09 Javascript
详解JS数组方法
Nov 20 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中强制下载文件的代码(解决了IE下中文文件名乱码问题)
2011/05/09 PHP
解析在zend Farmework下如何创立一个FORM表单
2013/06/28 PHP
PHP 文件编程综合案例-文件上传的实现
2013/07/03 PHP
phpmyadmin配置文件现在需要绝密的短密码(blowfish_secret)的2种解决方法
2014/05/07 PHP
Yii结合CKEditor实现图片上传功能
2014/06/13 PHP
如何正确配置Nginx + PHP
2016/07/15 PHP
PHP操作MongoDB实现增删改查功能【附php7操作MongoDB方法】
2018/04/24 PHP
PHP的简单跳转提示的实现详解
2019/03/14 PHP
解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题
2019/10/16 PHP
JS DOM 操作实现代码
2010/08/01 Javascript
与jquery serializeArray()一起使用的函数,主要来方便提交表单
2011/01/31 Javascript
jQuery之自动完成组件的深入解析
2013/06/19 Javascript
js处理自己不能定义二维数组的方法详解
2014/03/03 Javascript
JQuery中Text方法用法实例分析
2015/05/18 Javascript
jquery zTree异步加载简单实例讲解
2016/02/25 Javascript
javascript显示倒计时控制按钮的简单实现
2016/06/07 Javascript
js常用的继承--组合式继承
2017/03/06 Javascript
基于Bootstrap表单验证功能
2017/11/17 Javascript
详解React 的几种条件渲染以及选择
2018/10/23 Javascript
[44:30]完美世界DOTA2联赛PWL S2 GXR vs Magma 第一场 11.25
2020/11/26 DOTA
Python正则表达式使用经典实例
2016/06/21 Python
网易2016研发工程师编程题 奖学金(python)
2019/06/19 Python
django如何自己创建一个中间件
2019/07/24 Python
Python通过cv2读取多个USB摄像头
2019/08/28 Python
jupyter 中文乱码设置编码格式 避免控制台输出的解决
2020/04/20 Python
详解WebSocket跨域问题解决
2018/08/06 HTML / CSS
洛杉矶生活休闲而精致的基础品牌:Mika Jaymes
2018/01/07 全球购物
财务管理专业毕业生求职信
2014/06/02 职场文书
乡镇爱国卫生月活动总结
2014/06/25 职场文书
幼儿园大班开学寄语
2014/08/02 职场文书
2014村党支部书记党建工作汇报材料
2014/11/02 职场文书
2015年乡镇卫生院工作总结
2015/04/22 职场文书
《月光曲》教学反思
2016/02/16 职场文书
MySQL分区以及建索引的方法总结
2022/04/13 MySQL
Vue Mint UI mt-swipe的使用方式
2022/06/05 Vue.js
mysql sock文件存储了什么信息
2022/07/15 MySQL