VUEX:状态管理

博主在优化项目时,为提取公用状态,选择VueX将其分发给多个组件复用,以实现更清晰的状态管理和方便项目维护。介绍了VueX的目录结构设计、action和mutation的区别,还给出了具体实现文件,如index.js、state.js等。

  最近在优化项目,发现有很多公用的方法和属性,所以计划把这些公用的状态提取出来,所以选择VueX,将公用状态分发给多个组件复用,使得状态管理更为清晰,方便项目的维护。

1、目录结构的设计
- store:目录名称
	- index.js:状态管理实例的创建
	- state.js:公共管理的状态
	- mutation.js:用于状态值的修改
	- mutationType.js:mutations的类型设置,使用常量,建议使用大写
	- actions.js:用于提交mutations
2、action和mutation的区别
mutation有必须同步执行这个限制;
action不受限制,可以执行异步操作;
3、具体实现
【index.js】
import Vue from 'vue';
import Vuex from 'vuex';

import state from './state';
import actions from './actions';
import mutations from './mutations';

Vue.use(Vuex);

export default new Vuex.Store({
  state,
  mutations,
  actions
})
【state.js】
export default {
  company: {}
}
【mutationType.js】
export const GET_COMPANY = 'GET_COMPANY';
【mutation.js】
import * as types from './mutationTypes';

export default {
  [types.GET_COMPANY](state, company) {
    state.company = company;
  }
}
【actions.js】
import * as types from './mutationTypes';
import N from '@/js/libs/network';

export default {
  getCompany: function (context, queryId) {
    N.jsonGet(
      url,
      {
        id: queryId
      },
      {
        success: data => {
          context.commit(types.GET_COMPANY, data);
        },
        fail: XMLHttpRequest => {
          errorHandler(XMLHttpRequest);
        }
      }
    )
  }
} 


state的更改
this.$store.dispatch('getCompany', {});

  大致的用法就是这个样子,希望可以帮助到大家。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值