解决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实现关联数据(Linked Data)查询及注意细节
Feb 22 Javascript
jQuery判断数组是否包含了指定的元素
Mar 10 Javascript
jQuery插件ajaxFileUpload实现异步上传文件效果
Apr 14 Javascript
js 获取当前web应用的上下文路径实现方法
Aug 19 Javascript
使用JS批量选中功能实现更改数据库中的status状态值(批量展示)
Nov 22 Javascript
JavaScript 监控微信浏览器且自带返回按钮时间
Nov 27 Javascript
利用JQuery操作iframe父页面、子页面的元素和方法汇总
Sep 10 jQuery
vue v-model实现自定义样式多选与单选功能
Jul 05 Javascript
解决layui数据表格table的横向滚动条显示问题
Sep 04 Javascript
vue中nextTick用法实例
Sep 11 Javascript
JS实现的进制转换,浮点数相加,数字判断操作示例
Nov 09 Javascript
vue实力踩坑之push当前页无效
Apr 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循环获取GET和POST值的代码
2008/04/09 PHP
PHP 数组和字符串互相转换实现方法
2013/03/26 PHP
php开启与关闭错误提示适用于没有修改php.ini的权限
2014/10/16 PHP
php自定义hash函数实例
2015/05/05 PHP
PHP 配置后台登录以及模板引入
2017/01/24 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
2019/06/22 PHP
动态创建的表格单元格中的事件实现代码
2008/12/30 Javascript
jquery 3D球状导航的文章分类
2010/07/06 Javascript
jquery.jstree 增加节点的双击事件代码
2010/07/27 Javascript
javascript 手动给表增加数据的小例子
2013/07/10 Javascript
js实现浏览器的各种菜单命令比如打印、查看源文件等等
2013/10/24 Javascript
js判断手机号是否正确并返回的实现代码
2017/01/17 Javascript
JS查找字符串中出现最多的字符及个数统计
2017/02/04 Javascript
JS获取鼠标坐标并且根据鼠标位置不同弹出不同内容
2017/06/12 Javascript
js+html5实现手机九宫格密码解锁功能
2018/07/30 Javascript
JS基于对象的链表实现与使用方法示例
2019/01/31 Javascript
详解wepy开发小程序踩过的坑(小结)
2019/05/22 Javascript
JS中的算法与数据结构之链表(Linked-list)实例详解
2019/08/20 Javascript
解决layui 三级联动下拉框更新时回显的问题
2019/09/03 Javascript
详解小程序如何改变onLoad的执行时机
2019/11/01 Javascript
在vue中动态添加class类进行显示隐藏实例
2019/11/09 Javascript
分析并输出Python代码依赖的库的实现代码
2015/08/09 Python
Python动刷新抢12306火车票的代码(附源码)
2018/01/24 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
2019/03/27 Python
Pycharm同步远程服务器调试的方法步骤
2020/11/04 Python
纯CSS3实现滚动的齿轮动画效果
2014/06/05 HTML / CSS
关于HTML5你必须知道的28个新特性,新技巧以及新技术
2012/05/28 HTML / CSS
商务助理岗位职责
2013/11/13 职场文书
小区门卫管理制度
2014/01/29 职场文书
教师工作自我鉴定范文
2014/09/14 职场文书
2014普法依法治理工作总结
2014/12/18 职场文书
2015年出纳年终工作总结
2015/05/14 职场文书
心术观后感
2015/06/11 职场文书
2016全国“质量月”活动标语口号
2015/12/26 职场文书
PHP设计模式(观察者模式)
2021/07/07 PHP
在SQL Server中使用 Try Catch 处理异常的示例详解
2022/07/15 SQL Server