解决vuex刷新状态初始化的方法实现


Posted in Javascript onAugust 15, 2019

vuex五种基本对象

  • state:存储状态(变量)
  • getters:对数据获取之前的再次编译,可以理解为state的计算属性。我们在组件中使用$sotre.getters.fun()
  • mutations:修改状态,并且是同步的。在组件中使用$store.commit('',params)。这个和我们组件中的自定义事件类似。
  • actions:异步操作。在组件中使用是$store.dispath('')
  • modules:store的子模块,为了开发大型项目,方便状态管理而使用的。这里我们就不解释了,用起来和上面的一样。
npm install vuex -S // 安装vuex

src/store/index.js

import Vue from 'vue'
import Vuex from 'vuex'
import temp from '@/store/modules/temp'

Vue.use( Vuex ); // 挂载在vue

const store = new Vuex.Store({
  modules: {
    temp,
  }, state: {

  }, getters: {

  }, mutations: {

  },
});

export default store; // 抛出

src/store/modules/temp.js

const Storage = sessionStorage
const tempInfo = {
  state: { // 设置全局访问的state对象
    tempData: Storage['SET_TEMP_DATA'] ? JSON.parse(Storage['SET_TEMP_DATA']) : {}, // 设置初始化的值(Storage中是否存在,存在则获取,不存在则默认赋值{})
  }, mutations: { // 自定义改变state初始值的方法,这里面的参数除了state之外还可以再传额外的参数(变量或对象);
    SET_TEMP_DATA(state, tempData) {
      state.tempData = tempData
    },
  }, actions: {
    SetData({ commit }, tempData) {
      commit('SET_TEMP_DATA', tempData); // 同步操作
      Storage.setItem('SET_TEMP_DATA', JSON.stringify(tempData))
    }
  }, getters: { // 实时监听state值得变化(最新状态)
    tempData: (state) => {
      return state.tempData
    }
  }
}
export default tempInfo;

main.js

import Vue from 'vue'
import App from './App'
import router from './router'
import store from '@/store/index' //vuex 状态管理

Vue.config.productionTip = false

/* eslint-disable no-new */
new Vue({
 el: '#app',
 router,
 store, // 使用store
 components: { App },
 template: '<App/>'
})

src/index.vue

<template>
 <div class="move-forward">
   <div @click="click">点击改变vuex值</div>
</template>
<script>
  export default {
    methods: {
      click() {
        let aa = this.$store.getters.tempData.aaa*1
        this.$store.dispatch('SetData', {"aaa": aa += 1})
      },
    }
  }
</script>

其他

当然还可以使用vuex-persistedstate、vuex-along等这些第三方插件。

npm i -S vuex-persistedstate或npm i -S vuex-along
import Vue from 'vue'
import Vuex from 'vuex'
import temp from '@/store/modules/temp'
import createPersistedSatte from 'vuex-persistedstate' // 引入

Vue.use( Vuex );

const store = new Vuex.Store({
  modules: {
    temp,
  }, state: {

  }, getters: {

  }, mutations: {

  },
  plugins: [createPersistedSatte()], // 挂载插件
});

export default store

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 元素控制(追加元素/追加内容)介绍及应用
Apr 21 Javascript
使用jQuery动态加载js脚本文件的方法
Apr 03 Javascript
jQuery实现异步获取json数据的2种方式
Aug 29 Javascript
深入理解JavaScript系列(29):设计模式之装饰者模式详解
Mar 03 Javascript
JS动态修改iframe内嵌网页地址的方法
Apr 01 Javascript
js 递归和定时器的实例解析
Feb 03 Javascript
Node中使用ES6语法的基础教程
Jan 05 Javascript
详解基于vue的服务端渲染框架NUXT
Jun 20 Javascript
微信小程序页面调用自定义组件内的事件详解
Sep 12 Javascript
JavaScript对象访问器Getter及Setter原理解析
Dec 08 Javascript
vue中使用echarts的示例
Jan 03 Vue.js
Vue通过懒加载提升页面响应速度
May 10 Vue.js
超详细的5个Shell脚本实例分享(值得收藏)
Aug 15 #Javascript
koa2+vue实现登陆及登录状态判断
Aug 15 #Javascript
原生js实现的移动端可拖动进度条插件功能详解
Aug 15 #Javascript
快速对接payjq的个人微信支付接口过程解析
Aug 15 #Javascript
Element-UI中关于table表格的那些骚操作(小结)
Aug 15 #Javascript
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
Aug 15 #Javascript
js设计模式之单例模式原理与用法详解
Aug 15 #Javascript
You might like
PHP批量删除、清除UTF-8文件BOM头的代码实例
2014/04/14 PHP
PHP数据库操作三:redis用法分析
2017/08/16 PHP
PHP学习记录之常用的魔术常量详解
2019/12/12 PHP
JavaScript 解析Json字符串的性能比较分析代码
2009/12/16 Javascript
解析URI与URL之间的区别与联系
2013/11/22 Javascript
jQuery实现点击小图片淡入淡出显示大图片特效
2015/09/09 Javascript
详解Bootstrap glyphicons字体图标
2016/01/04 Javascript
javascript从定义到执行 你不知道的那些事
2016/01/04 Javascript
jquery中用函数来设置css样式
2016/12/22 Javascript
微信小程序 登录实例详解
2017/01/16 Javascript
详解利用Angular实现多团队模块化SPA开发框架
2017/11/27 Javascript
微信小程序视图容器(swiper)组件创建轮播图
2020/06/19 Javascript
koa socket即时通讯的示例代码
2018/09/07 Javascript
JS数组去重的6种方法完整实例
2018/12/08 Javascript
深入分析element ScrollBar滚动组件源码
2019/01/22 Javascript
优雅的处理vue项目异常实战记录
2019/06/05 Javascript
Vue移动端实现图片上传及超过1M压缩上传
2019/12/23 Javascript
编写v-for循环的技巧汇总
2020/12/01 Javascript
vue集成一个支持图片缩放拖拽的富文本编辑器
2021/01/29 Vue.js
vue+flask实现视频合成功能(拖拽上传)
2021/03/04 Vue.js
[02:40]DOTA2英雄基础教程 先知
2013/11/29 DOTA
[03:46]DAC趣味视频-中文考试.mp4
2017/04/02 DOTA
numpy排序与集合运算用法示例
2017/12/15 Python
对python中for、if、while的区别与比较方法
2018/06/25 Python
浅谈Python2之汉字编码为unicode的问题(即类似\xc3\xa4)
2019/08/12 Python
tensorflow模型保存、加载之变量重命名实例
2020/01/21 Python
python实现三种随机请求头方式
2021/01/05 Python
Marks & Spencer爱尔兰:英国马莎百货
2016/04/20 全球购物
建筑工程技术应届生求职信
2013/11/17 职场文书
财务出纳员岗位职责
2013/11/26 职场文书
司机检讨书
2014/02/13 职场文书
期终自我鉴定
2014/02/17 职场文书
有兼职工作经历的简历自我评价
2014/03/07 职场文书
开天辟地观后感
2015/06/09 职场文书
《平行四边形的面积》教学反思
2016/02/16 职场文书
如何写好竞聘报告
2019/04/03 职场文书