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实现文本框缩放以及上下移动功能
Nov 24 Javascript
关于JavaScript作用域你想知道的一切
Feb 04 Javascript
jquery.qtip提示信息插件用法简单实例
Jun 17 Javascript
JS实现的多张图片轮流播放幻灯片效果
Jul 22 Javascript
js多个物体运动功能实例分析
Dec 20 Javascript
jQuery插件版本冲突的处理方法分析
Jan 16 Javascript
jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
Jul 08 jQuery
Three.js加载外部模型的教程详解
Nov 10 Javascript
在 Node.js 中使用 async 函数的方法
Nov 17 Javascript
vue select二级联动第二级默认选中第一个option值的实例
Jan 10 Javascript
nodemon实现Typescript项目热更新的示例代码
Nov 19 Javascript
JS实现京东商品分类侧边栏
Dec 11 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
dedecms模版制作使用方法
2007/04/03 PHP
phpMyAdmin下载、安装和使用入门教程
2007/05/31 PHP
PHP rawurlencode与urlencode函数的深入分析
2013/06/08 PHP
php用ini_get获取php.ini里变量值的方法
2015/03/04 PHP
PHP实现微信网页授权开发教程
2016/01/19 PHP
SSO单点登录的PHP实现方法(Laravel框架)
2016/03/23 PHP
PHP中类属性与类静态变量的访问方法示例
2016/07/13 PHP
innerhtml用法 innertext用法 以及innerHTML与innertext的区别
2009/10/26 Javascript
基于jquery实现的移入页面上空文本框时,让它变为焦点,移出清除焦点
2011/07/26 Javascript
jquery实现图片裁剪思路及实现
2013/08/16 Javascript
基于javascript的COOkie的操作实现只能点一次
2014/12/26 Javascript
JS数组去掉重复数据只保留一条的实现代码
2016/08/11 Javascript
原生JS实现图片懒加载(lazyload)实例
2017/06/13 Javascript
详解使用路由延迟加载 Angular 模块
2017/10/12 Javascript
JS实现动态生成html table表格的方法分析
2018/07/11 Javascript
koa2 从入门到精通(小结)
2019/07/23 Javascript
Javascript如何实现双指控制图片功能
2020/02/25 Javascript
写给新手同学的vuex快速上手指北小结
2020/04/14 Javascript
Python中的字符串查找操作方法总结
2016/06/27 Python
Python实现读取邮箱中的邮件功能示例【含文本及附件】
2017/08/05 Python
python针对excel的操作技巧
2018/03/13 Python
Python 调用有道翻译接口实现翻译
2020/03/02 Python
python定时截屏实现
2020/11/02 Python
css3.0 图形构成实例练习一
2013/03/19 HTML / CSS
HTML5单选框、复选框、下拉菜单、文本域的实现代码
2020/12/01 HTML / CSS
墨西哥网上购物:Linio墨西哥
2016/10/20 全球购物
英国时尚优质的女装:Hope Fashion
2018/08/14 全球购物
成人大专生实习期的自我评价
2013/10/02 职场文书
模具专业推荐信
2013/10/30 职场文书
捐献物资倡议书范文
2014/05/19 职场文书
人事任命书怎么写
2014/06/05 职场文书
党的群众路线教育实践活动个人整改方案
2014/09/21 职场文书
2014年人民调解工作总结
2014/12/08 职场文书
2016八一建军节慰问信
2015/11/30 职场文书
sass 常用备忘案例详解
2021/09/15 HTML / CSS
vue如何实现关闭对话框后刷新列表
2022/04/08 Vue.js