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传参数受特殊字符影响错误的解决方法
Oct 21 Javascript
javascript中对Attr(dom中属性)的操作示例讲解
Dec 02 Javascript
js调用iframe实现打印页面内容的方法
Mar 04 Javascript
Javascript 实现放大镜效果实例详解
Dec 03 Javascript
node.js实现的装饰者模式示例
Sep 06 Javascript
信息滚动效果的实例讲解
Sep 18 Javascript
基于vue-router 多级路由redirect 重定向的问题
Sep 03 Javascript
jQuery对底部导航进行跳转并高亮显示的实例代码
Apr 23 jQuery
JavaScript函数IIFE使用详解
Oct 21 Javascript
微信小程序转化为uni-app项目的方法示例
May 22 Javascript
js实现从右往左匀速显示图片(无缝轮播)
Jun 29 Javascript
vue中移动端调取本地的复制的文本方式
Jul 18 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
建立文件交换功能的脚本(三)
2006/10/09 PHP
php生成略缩图代码
2012/07/16 PHP
php批量添加数据与批量更新数据的实现方法
2014/12/16 PHP
PHP rsa加密解密算法原理解析
2020/12/09 PHP
jQuery ajax dataType值为text json探索分享
2013/09/23 Javascript
jQuery切换网页皮肤并保存到Cookie示例代码
2014/06/16 Javascript
jQuery中:first-child选择器用法实例
2014/12/31 Javascript
js对象的复制继承实例
2015/01/10 Javascript
jQuery获取页面及个元素高度、宽度的总结——超实用
2015/07/28 Javascript
jQuery过滤选择器经典应用
2016/08/18 Javascript
JS判断是否手机或pad访问实现方法
2016/12/09 Javascript
浅谈jQuery的bind和unbind事件(绑定和解绑事件)
2017/03/02 Javascript
Angular 4 依赖注入学习教程之FactoryProvider的使用(四)
2017/06/04 Javascript
Jquery获取radio选中值实例总结
2019/01/17 jQuery
vue-cli3项目配置eslint代码规范的完整步骤
2020/09/10 Javascript
Python的组合模式与责任链模式编程示例
2016/02/02 Python
Django之提交表单与前后端交互的方法
2019/07/19 Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
2019/08/05 Python
Python3如何判断三角形的类型
2020/04/12 Python
CSS3实现背景透明文字不透明的示例代码
2018/06/25 HTML / CSS
html+css3实现的登录界面
2020/12/09 HTML / CSS
HTML5 Canvas中使用用路径描画圆弧
2015/01/01 HTML / CSS
美国购买当代和现代家具网站:MODTEMPO
2018/07/20 全球购物
日本最大美瞳直送网:Morecontact(中文)
2019/04/03 全球购物
澳大利亚家居用品零售商:Harris Scarfe
2020/10/10 全球购物
.NET程序员的数据库面试题
2012/10/10 面试题
党员自我评价分享
2013/12/13 职场文书
大学毕业感言50字
2014/02/07 职场文书
清明节扫墓活动方案
2014/03/02 职场文书
小学生读书活动总结
2014/06/30 职场文书
自我检讨书范文
2015/01/28 职场文书
签证工作证明模板
2015/06/15 职场文书
药品销售员2015年终工作总结
2015/10/22 职场文书
导游词之泉州崇武古城
2019/12/20 职场文书
vue项目如何打包之项目打包优化(让打包的js文件变小)
2022/04/30 Vue.js