解决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 validation插件表单验证的一个例子
Mar 03 Javascript
jQuery 获取对象 定位子对象
May 31 Javascript
JQuery动态创建DOM、表单元素的实现代码
Aug 09 Javascript
浅谈jQuery中的checkbox问题
Aug 10 Javascript
JS如何判断浏览器类型和详细区分IE各版本浏览器
Mar 04 Javascript
Angular.js实现获取验证码倒计时60秒按钮的简单方法
Oct 18 Javascript
JS关于刷新页面的相关总结
May 09 Javascript
jQuery实现动画、消失、显现、渐出、渐入效果示例
Sep 06 jQuery
ES6知识点整理之模块化的应用详解
Apr 15 Javascript
详解微信小程序-扫一扫 wx.scanCode() 扫码大变身
Apr 30 Javascript
javascript异常处理实现原理详解
Feb 17 Javascript
EXTJS7实现点击拖拉选择文本
Dec 17 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
Laravel框架创建路由的方法详解
2019/09/04 PHP
学习ExtJS table布局
2009/10/08 Javascript
ExtJS Window 最小化的一种方法
2009/11/18 Javascript
jBox 2.3基于jquery的最新多功能对话框插件 常见使用问题解答
2011/11/10 Javascript
jquery xMarquee实现文字水平无缝滚动效果
2014/04/29 Javascript
js简单实现交换Li的值
2014/05/22 Javascript
nodejs获取本机内网和外网ip地址的实现代码
2014/06/01 NodeJs
使用npm发布Node.JS程序包教程
2015/03/02 Javascript
推荐10 款 SVG 动画的 JavaScript 库
2015/03/24 Javascript
JS控制层作圆周运动的方法
2016/06/20 Javascript
解析NodeJs的调试方法
2016/12/11 NodeJs
bootstrap datetimepicker日期插件超详细使用方法介绍
2017/02/23 Javascript
Vue.js tab实现选项卡切换
2017/05/16 Javascript
Vue.js中组件中的slot实例详解
2017/07/17 Javascript
JS+HTML+CSS实现轮播效果
2017/11/28 Javascript
webpack构建的详细流程探底
2018/01/08 Javascript
看看“疫苗查询”小程序有温度的代码
2018/07/31 Javascript
webpack4与babel配合使es6代码可运行于低版本浏览器的方法
2018/10/12 Javascript
解决python3 urllib中urlopen报错的问题
2017/03/25 Python
Python最火、R极具潜力 2017机器学习调查报告
2017/12/11 Python
2018年Python值得关注的开源库、工具和开发者(总结篇)
2018/01/04 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
2018/12/20 Python
python将处理好的图像保存到指定目录下的方法
2019/01/10 Python
python实现删除列表中某个元素的3种方法
2020/01/15 Python
Python3爬虫RedisDump的安装步骤
2021/02/20 Python
CSS3 新增选择器的实例
2019/11/13 HTML / CSS
中邮全球便购:中国邮政速递物流
2017/03/04 全球购物
印度领先的眼镜电子商务网站:Lenskart
2019/12/16 全球购物
小学课外活动总结
2014/07/09 职场文书
离职证明标准格式
2014/09/15 职场文书
鸦片战争观后感
2015/06/09 职场文书
阳光体育运动标语口号
2015/12/26 职场文书
修辞手法有哪些?
2019/08/29 职场文书
营销策划分析:怎么策划才能更好销量产品?
2019/09/04 职场文书
SQL语句多表联合查询的方法示例
2022/04/18 MySQL
一次SQL查询优化原理分析(900W+数据从17s到300ms)
2022/06/10 SQL Server