解决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 相关文章推荐
学习YUI.Ext基础第一天
Mar 10 Javascript
使用jquery插件实现图片延迟加载技术详细说明
Mar 12 Javascript
JS解决ie6下png透明的方法实例
Aug 02 Javascript
JavaScript实现按照指定长度为数字前面补零输出的方法
Mar 19 Javascript
jQuery实现的表头固定效果实例【附完整demo源码下载】
Aug 01 Javascript
探索Javascript中this的奥秘
Dec 11 Javascript
ES6新数据结构Map功能与用法示例
Mar 31 Javascript
详谈js模块化规范
Jul 07 Javascript
vue自定义filters过滤器
Apr 26 Javascript
vue .js绑定checkbox并获取、改变选中状态的实例
Aug 24 Javascript
解决angularjs WdatePicker ng-model的问题
Sep 13 Javascript
详解Vue template 如何支持多个根结点
Feb 10 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作为Shell脚本语言使用
2006/10/09 PHP
通过table标签,PHP输出EXCEL的实现方法
2013/07/24 PHP
php使用codebase生成随机数
2014/03/25 PHP
php实现从上传文件创建缩略图的方法
2015/04/02 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
2015/12/14 PHP
纯PHP代码实现支付宝批量付款
2015/12/24 PHP
用javascript实现页面打印的三种方法
2007/03/05 Javascript
测试JavaScript字符串处理性能的代码
2009/12/07 Javascript
JavaScript学习笔记之获取当前目录的实现代码
2010/12/14 Javascript
extjs之去除s.gif的影响
2010/12/25 Javascript
Blocksit插件实现瀑布流数据无限( 异步)加载
2014/06/20 Javascript
Javascript学习笔记之相等符号与严格相等符号
2014/11/23 Javascript
谈一谈jQuery核心架构设计
2016/03/28 Javascript
jQuery事件绑定on()与弹窗实现代码
2016/04/28 Javascript
JavaScript数据结构之二叉树的查找算法示例
2017/04/13 Javascript
Vue ElementUI之Form表单验证遇到的问题
2017/08/21 Javascript
webpack4 入门最简单的例子介绍
2018/09/05 Javascript
通过cordova将vue项目打包为webapp的方法
2019/02/02 Javascript
vue中进行微博分享的实例讲解
2019/10/14 Javascript
浅析vue-router实现原理及两种模式
2020/02/11 Javascript
关于angular 8.1使用过程中的一些记录
2020/11/25 Javascript
[55:54]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python两个整数相除得到浮点数值的方法
2015/03/18 Python
Python 爬虫的工具列表大全
2016/01/31 Python
Django 实现购物车功能的示例代码
2018/10/08 Python
Python常用模块之requests模块用法分析
2019/05/15 Python
python 有效的括号的实现代码示例
2019/11/11 Python
python des,aes,rsa加解密的实现
2021/01/16 Python
html5指南-7.geolocation结合google maps开发一个小的应用
2013/01/07 HTML / CSS
Html5游戏开发之乒乓Ping Pong游戏示例(二)
2013/01/21 HTML / CSS
澳洲女装时尚在线:Blue Bungalow
2018/05/05 全球购物
皮肤科医师岗位职责
2013/12/04 职场文书
《小猫刮胡子》教学反思
2014/02/21 职场文书
党员群众路线承诺书
2014/05/20 职场文书
观后感格式
2015/06/19 职场文书
Android RecyclerView实现九宫格效果
2022/06/28 Java/Android