美文网首页
Vuex 状态管理器

Vuex 状态管理器

作者: Do_Du | 来源:发表于2019-08-21 18:03 被阅读0次

全局状态管理,在任意组件里通用,可以进行获取、修改,并且修改的值会得到全局的响应变更。

总结:
1、获取变量值xxx:this.store.xxx;或者通过更好的方法 getters 2、改变初始变量值: this.store.commit('SET_TOKEN', '123456789')

1、安装

npm install vuex --save

2、在src目录下新建一个名为store的文件夹,为方便引入在store文件夹里新建一个index.js,js里引入vue和vuex,vue引用vuex,并初始化store,最后暴露出去。代码如下:

import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
const store = new Vuex.Store();

export default store;

3、在main.js里引入store,再全局注入,这样就可以再任一组件通过this.$store.xxx 获取变量值xxx

import store from './store'

new Vue({
  el: '#app',
  router,
  store,
  template: '<App/>',
  components: {App}
})

下面开始state

1、定义初始变量
在store文件夹里的index.js里,引入Vue和Vuex 并使用,再声明一个state变量对象,内含所有的变量初始化,再把state对象赋值给store,并暴露store出去

import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
const state = { // 设置全局访问的state对象
  token: '', // 设置初始属性值
  name: '',
  avatar: ''
};
const store = new Vuex.store({
  state
});
export default store;

2、通过getters获取变量值

import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
const state = { // 设置全局访问的state对象
  token: '', // 设置初始属性值
  name: '',
  avatar: ''
};
const getters = {
  getToken(state) {
    return state.token
  },
  getName(state) {
    return state.name
  }
};
const store = new Vuex.store({
  state,
  getters 
});
export default store;

3、通过mutattions改变初始变量值
改变初始变量值: this.$store.commit('SET_TOKEN', '123456789')

import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
const state = { // 设置全局访问的state对象
  token: '', // 设置初始属性值
  name: '',
  avatar: ''
};
const getters = {
  getToken(state) {
    return state.token
  },
  getName(state) {
    return state.name
  }
};
const mutations = {
  SET_TOKEN: (state, token) => { // 这里的token是新的要传入的值
    state.token = token
  },
  SET_NAME: (state, name) => {
    state.name = name
  },
  SET_AVATAR: (state, avatar) => {
    state.avatar = avatar
  },
  SET_ROLES: (state, roles) => {
    state.roles = roles
  }
}
const store = new Vuex.store({
  state,
  getters,
  mutations
});
export default store;

但是mutations里面的方法 都是同步事务,意思就是说:比如这里的一个this.$store.commit('SET_TOKEN','123456789')方法,两个组件里用执行得到的值,每次都是一样的,这样肯定不是理想的需求

4、通过Actions异步触发mutations里面的方法
改变初始变量值:this.$store.dispatch('login',data)

import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
const state = { // 设置全局访问的state对象
  token: '', // 设置初始属性值
  name: '',
  avatar: ''
};
const getters = {
  getToken(state) {
    return state.token
  },
  getName(state) {
    return state.name
  }
};
const mutations = {
  SET_TOKEN: (state, token) => { // 这里的token是新的要传入的值
    state.token = token
  },
  SET_NAME: (state, name) => {
    state.name = name
  },
  SET_AVATAR: (state, avatar) => {
    state.avatar = avatar
  },
  SET_ROLES: (state, roles) => {
    state.roles = roles
  }
};
const actions = { // 可以直接commit mutations里面地方方法如changeName,也可以写信逻辑如login
    login({ commit }, userInfo) {
     const { username, password } = userInfo
     return new Promise((resolve, reject) => {
       login({ username: username.trim(), password: password }).then(response => {
         const { data } = response
         commit('SET_TOKEN', data.token)
         setToken(data.token)
         resolve()
       }).catch(error => {
         reject(error)
       })
     })
  },
 changeName({ commit }, data) {
   commit('SET_NAME', data)
 }
};
const store = new Vuex.store({
  state,
  getters,
  mutations,
  actions
});
export default store;

相关文章

  • Vuex 2.0

    概念 Vuex 类似 Redux 的状态管理器,用来管理Vue的所有组件状态。 为什么使用Vuex? 当你打算开发...

  • Vuex

    简介:vue官方提供的状态管理器 vuex的使用步骤: 安装:npm install --save vuex; 在...

  • vue spa 微信公众项目开发与填坑之旅

    Base vue-cli3.0 注入插件 1. vuex=>支持状态管理器 2.vuex-persistedsta...

  • 8 - Redux 简介

    简介 Redux 是 JavaScript 状态管理器。跟 Vuex 很相似,但又不同于 Vuex。 Redux ...

  • React redux ( 状态管理器 )

    简介 : Redux 是 JavaScript 状态管理器。跟 Vuex 很相似,但又不同于 Vuex。 Redu...

  • vuex状态持久化 方案一

    vuex状态持久化 方案一 前言 我们都知道Vuex是一个状态管理器,而他的缺点也很明确,在页面刷新之后,Vuex...

  • Vuex 状态管理器

    全局状态管理,在任意组件里通用,可以进行获取、修改,并且修改的值会得到全局的响应变更。 总结:1、获取变量值xxx...

  • Vuex 状态管理器

    1. 安装 npm install vuex --save 2. 创建一个store仓库 store.js 3. ...

  • vuex

    VUEX的使用 vuex的作用: 常用来作为全局状态管理器, 定义一个状态全局可用,部分功能与缓存类似,但是vue...

  • vue的学习笔记总结

    1.常用名词 npm:包管理器,用于下载资源包 vue-router:vue推荐的路由框架 vuex: 状态管理器...

网友评论

      本文标题:Vuex 状态管理器

      本文链接:https://www.haomeiwen.com/subject/raeisctx.html