Vuex初始化

1、Vuex是一个专为Vue.js应用程序开发的状态管理模式。

2、在开发中遇到了一种能够高效管理Vuex的初始化方式。在此记录下来

3、目录结构:src/store

  • actions.js (处理异步操作或对mutations的封装)
  • getters.js (对状态的获取)
  • index.js (入口文件)
  • mutation-types.js (存储mutations相关的字符串常量)
  • mutations.js (对状态的修改)
  • states.js (存储所有状态)

4、文件内容:

(1)state.js

	// 存放state数据
	const state = {
	  // 是否登录
	  loginStatu: null,
	  // 用户信息
	  userInfo: null,
	  
	}
	export default state

(2)getters.js

// 对状态的获取

// 登录状态
export const loginStatu = state => state.loginStatu || JSON.parse(window.localStorage.getItem('loginStatu'))

// 用户信息
export const userInfo = state => state.userInfo || JSON.parse(window.localStorage.getItem('userInfo'))

(3)mutation-types.js

// 存储mutations相关的字符串常量

// 是否登录
export const SET_LOGINSTATU = 'SET_LOGINSTATU'
// 获取用户信息
export const SET_USERINFO = 'SET_USERINFO'

(4)mutations.js

// 修改state中的数据
import * as types from './mutation-types'

const mutations = {
    // 是否登陆
    [types.SET_LOGINSTATU](state, loginStatu){
        state.loginStatu = loginStatu
    },
    // 获取用户信息
    [types.SET_USERINFO](state, userInfo){
        state.userInfo = userInfo
    }
}
export default mutations

(5)actions.js

在初始化项目的时候,该文件一般是空的,不影响对Vuex的使用,当需要对mutations封装时,可以修改此文件

// 下面的代码是在开发音乐播放功能时对播放器各功能的封装
import * as types from './mutation-types'

// 选择播放
export const selectPlay = function({ commit, state }, { list, index }) {
  commit(types.SET_SEQUENCE_LIST, list)
  if (state.mode === playMode.random) {
    let randomList = utils.shuffle(list)
    commit(types.SET_PLAYLIST, randomList)
    index = findIndex(randomList, list[index])
  } else {
    commit(types.SET_PLAYLIST, list)
  }
  commit(types.SET_CURRENT_INDEX, index)
  commit(types.SET_PLAYING_STATE, true)
}
...

(6)index.js

import Vue from 'vue'
import Vuex from 'vuex'
import * as actions from './actions'
import * as getters from './getters'
import states from './states'
import mutations from './mutations'
import createLogger from 'vuex/dist/logger'

// 显式地通过Vue.use()来安装Vuex
Vue.use(Vuex)

// 只在开发环境启动debug模式,logger插件会在控制台打印状态修改前、修改后的信息
const debug = process.env.NODE_ENV !== 'production'

export default new Vuex.Store({
  actions,
  getters,
  states,
  mutations,
  strict: debug,
  plugins: debug ? [createLogger()] : []
})

5、在main.js中注入

	import store from './store'
	
	...
	
	new Vue({
	  el: '#app',
	  store,
	  render: h => h(App)
	})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值