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高级拖动技术 setCapture,releaseCapture
Jul 31 Javascript
js获取url参数值的两种方式
Sep 10 Javascript
Javascript脚本实现静态网页加密实例代码
Nov 05 Javascript
js定时调用方法成功后并停止调用示例
Apr 08 Javascript
node.js中的fs.open方法使用说明
Dec 17 Javascript
浅析JavaScript动画
Jun 10 Javascript
JS自动倒计时30秒后按钮才可用(两种场景)
Aug 31 Javascript
js实现分割上传大文件
Mar 09 Javascript
详解使用vue-admin-template的优化历程
May 20 Javascript
JS实现的合并两个有序链表算法示例
Feb 25 Javascript
Vue使用JSEncrypt实现rsa加密及挂载方法
Feb 07 Javascript
JS开发前端团队展示控制器来为成员引流
Aug 14 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
fleaphp crud操作之findByField函数的使用方法
2011/04/23 PHP
Zend Framework基于Command命令行建立ZF项目的方法
2017/02/18 PHP
php显示页码分页类的封装
2017/06/08 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
Jquery 插件学习实例1 插件制作说明与tableUI优化
2010/04/02 Javascript
javascript间隔定时器(延时定时器)学习 间隔调用和延时调用
2014/01/13 Javascript
Javascript浮点数乘积运算出现多位小数的解决方法
2014/02/17 Javascript
jquery 无限级下拉菜单的简单实现代码
2014/02/21 Javascript
JavaScript学习笔记之JS事件对象
2015/01/22 Javascript
Jquery轮播效果实现过程解析
2016/03/30 Javascript
angularjs 源码解析之injector
2016/08/22 Javascript
Webpack性能优化 DLL 用法详解
2017/08/10 Javascript
微信小程序公用参数与公用方法用法示例
2019/01/09 Javascript
vue路由守卫+登录态管理实例分析
2019/05/21 Javascript
bootstrap table.js动态填充单元格数据的多种方法
2019/07/18 Javascript
vue 监听 Treeselect 选择项的改变操作
2020/08/31 Javascript
如何在vue中使用百度地图添加自定义覆盖物(水波纹)
2020/11/03 Javascript
[01:06]DOTA2亚洲邀请赛专属珍藏-荧煌之礼
2017/03/24 DOTA
使用Python的Django框架实现事务交易管理的教程
2015/04/20 Python
Pthon批量处理将pdb文件生成dssp文件
2015/06/21 Python
Python使用PIL库实现验证码图片的方法
2016/03/11 Python
Python 爬虫模拟登陆知乎
2016/09/23 Python
Python numpy生成矩阵、串联矩阵代码分享
2017/12/04 Python
matplotlib中legend位置调整解析
2017/12/19 Python
使用Python+Splinter自动刷新抢12306火车票
2018/01/03 Python
在python中按照特定顺序访问字典的方法详解
2018/12/14 Python
Scrapy框架爬取Boss直聘网Python职位信息的源码
2019/02/22 Python
Python3 pandas 操作列表实例详解
2019/09/23 Python
HTML5+JS实现俄罗斯方块原理及具体步骤
2013/11/29 HTML / CSS
船舶专业个人求职信范文
2014/01/02 职场文书
公立医院改革实施方案
2014/03/14 职场文书
幼儿园小班教师寄语
2014/04/03 职场文书
公民代理授权委托书
2014/09/24 职场文书
党员批评与自我批评
2014/10/15 职场文书
Nginx快速入门教程
2021/03/31 Servers
帮你提高开发效率的JavaScript20个技巧
2021/06/18 Javascript