解决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 ie6兼容position:fixed实现思路
Apr 01 Javascript
JS Map 和 List 的简单实现代码
Jul 08 Javascript
jQuery 回车事件enter使用示例
Feb 18 Javascript
网页运行时提示对象不支持abigimage属性或方法
Aug 10 Javascript
js实现感应鼠标图片透明度变化的方法
Feb 20 Javascript
jQuery简单实现隐藏以及显示特效
Feb 26 Javascript
jQuery Validate初步体验(一)
Dec 12 Javascript
jquery+ajax实现省市区三级联动 (封装和不封装两种方式)
May 15 jQuery
迅速了解一下ES10中Object.fromEntries的用法使用
Mar 05 Javascript
Node.js系列之安装配置与基本使用(1)
Aug 30 Javascript
使用layui+ajax实现简单的菜单权限管理及排序的方法
Sep 10 Javascript
JavaScript监听触摸事件代码实例
Dec 30 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如何调用webservice应用介绍
2012/11/24 PHP
浅析php变量修饰符static的使用
2013/06/28 PHP
基于PHP实现的事件机制实例分析
2015/06/18 PHP
PHP使用ODBC连接数据库的方法
2015/07/18 PHP
WordPress主题制作之模板文件的引入方法
2015/12/28 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
2016/05/13 PHP
学习YUI.Ext第七日-View&amp;JSONView Part Two-一个画室网站的案例
2007/03/10 Javascript
基于JQuery的Select选择框的华丽变身
2011/08/23 Javascript
JS按回车键实现登录的方法
2014/08/25 Javascript
Javascript基础教程之数据类型 (数值 Number)
2015/01/18 Javascript
JS函数this的用法实例分析
2015/02/05 Javascript
常见JS验证脚本汇总
2015/12/01 Javascript
bootstrap输入框组件使用方法详解
2017/01/19 Javascript
JS Select下拉框(支持输入模糊查询)
2017/02/04 Javascript
JavaScript两种计时器的实例讲解
2019/01/31 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2019/08/17 Javascript
VsCode与Node.js知识点详解
2019/09/05 Javascript
解决Layui 表格自适应高度的问题
2019/11/15 Javascript
原生JS实现萤火虫效果
2020/03/07 Javascript
Tensorflow实现神经网络拟合线性回归
2019/07/19 Python
Python进程,多进程,获取进程id,给子进程传递参数操作示例
2019/10/11 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
2019/11/29 Python
python打印异常信息的两种实现方式
2019/12/24 Python
Python用K-means聚类算法进行客户分群的实现
2020/08/23 Python
分享一个H5原生form表单的checkbox特效代码
2018/02/26 HTML / CSS
斯凯奇新西兰官网:SKECHERS新西兰
2018/02/22 全球购物
法学毕业生自荐信
2013/11/13 职场文书
工程专业应届生求职信
2014/02/19 职场文书
任命书范本大全
2014/06/06 职场文书
本科生自荐信
2014/06/18 职场文书
2014年招商工作总结
2014/11/22 职场文书
欠款证明
2015/06/24 职场文书
MySQL update set 和 and的区别
2021/05/08 MySQL
MySQL面试题讲解之如何设置Hash索引
2021/11/01 MySQL
Nginx本地配置SSL访问的实例教程
2022/05/30 Servers
HTML中link标签属性的具体用法
2023/05/07 HTML / CSS