解决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 相关文章推荐
用JavaScript和注册表脚本实现右键收藏Web页选中文本
Jan 28 Javascript
Extjs4中的分页应用结合前后台
Dec 13 Javascript
js获取url中指定参数值的示例代码
Dec 14 Javascript
分享20个提升网站界面体验的jQuery插件
Dec 15 Javascript
微信小程序 特效菜单抽屉效果实例代码
Jan 11 Javascript
Jil,高效的json序列化和反序列化库
Feb 15 Javascript
javascript 作用于作用域链的详解
Sep 27 Javascript
Vue cli3 库模式搭建组件库并发布到 npm的流程
Oct 12 Javascript
vue中v-text / v-html使用实例代码详解
Apr 02 Javascript
如何根据业务封装自己的功能组件
Apr 19 Javascript
JavaScript:ES2019 的新特性(译)
Aug 08 Javascript
微信小程序APP页面的之间的相互传递参数以及自定义组件
Apr 19 Javascript
超详细的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 date()日期时间函数详解
2010/05/16 PHP
PHP中的命名空间详细介绍
2015/07/02 PHP
PHP实现路由映射到指定控制器
2016/08/13 PHP
php处理单文件、多文件上传代码分享
2016/08/24 PHP
PHP抽象类与接口的区别详解
2019/03/21 PHP
IE 缓存策略的BUG的解决方法
2007/07/21 Javascript
javascript import css实例代码
2008/07/18 Javascript
jQuery maxlength文本字数限制插件
2010/04/16 Javascript
中文字符串截取的js函数代码
2013/04/17 Javascript
我的Node.js学习之路(四)--单元测试
2014/07/06 Javascript
jquery实现的下拉和收缩效果示例
2014/08/21 Javascript
JavaScript前端图片加载管理器imagepool使用详解
2014/12/29 Javascript
JavaScript实现自动消除按钮功能的方法
2015/08/05 Javascript
JS转换HTML转义符的方法
2016/08/24 Javascript
JavaScript省市区三级联动菜单效果
2016/09/21 Javascript
js实现掷骰子小游戏
2019/10/24 Javascript
python实现堆栈与队列的方法
2015/01/15 Python
Ubuntu安装Jupyter Notebook教程
2017/10/18 Python
使用python绘制3维正态分布图的方法
2018/12/29 Python
python 将对象设置为可迭代的两种实现方法
2019/01/21 Python
Python面向对象总结及类与正则表达式详解
2019/04/18 Python
python 获取等间隔的数组实例
2019/07/04 Python
python爬虫selenium和phantomJs使用方法解析
2019/08/08 Python
对python中的*args与**kwgs的含义与作用详解
2019/08/28 Python
解决python 读取excel时 日期变成数字并加.0的问题
2019/10/08 Python
解决django接口无法通过ip进行访问的问题
2020/03/27 Python
澳大利亚婴儿、幼儿和儿童在线设计师商店:Smooch Baby
2019/02/16 全球购物
大学生军训广播稿
2014/01/24 职场文书
校园文化标语
2014/06/18 职场文书
大学生见习报告总结
2014/11/04 职场文书
2014酒店客房部工作总结
2014/12/16 职场文书
医者仁心观后感
2015/06/17 职场文书
2016新年晚会开场白
2015/12/03 职场文书
my.ini优化mysql数据库性能的十个参数(推荐)
2021/05/26 MySQL
redis sentinel监控高可用集群实现的配置步骤
2022/04/01 Redis
《进击的巨人》新联动CM 兵长强势出击兽巨人
2022/04/05 日漫