美文网首页
【vuex】状态管理器store、mutation、state

【vuex】状态管理器store、mutation、state

作者: Q小予o0 | 来源:发表于2020-07-01 17:51 被阅读0次

VueX 一个专门为 Vue.js 应用设计的状态管理架构,统一管理和维护各个vue组件的可变化状态。适合在需要多个地方更新同一个数据的时候使用。
状态管理核心状态管理有5个核心,分别是state、getter、mutation、action以及module。

Vuex使用单一状态树,即用一个对象就包含了全部的状态数据。
  • state => 基本数据,单一状态树,在state中需要定义我们所需要管理的数组、对象、字符串等等。
  • getters => 从基本数据派生的数据,类似vue.js的计算属性,state中的某个需要派生状态的值发生改变的时候才会被重新计算。
  • mutations => 提交更改数据的方法,同步!更改store中state状态的唯一方法提交mutations触发store.commit。
  • actions => 像一个装饰器,包裹mutations,使之可以异步。
    modules => 模块化Vuex

新建一个mutation-types文件来存放常量

// userInfo
export const GET_ACCOUNT = 'getAccount';
export const SET_ACCOUNT = 'setAccount';

定义state,可在store文件的module模块里对应文件定义

const state = {
  userinfo: {
    firstname: getUsername(),
    mobile: '',
    email: '',
    dob: '',
    gender: ''
};

声明mutation,触发commit 更新state

const mutations = {
  [GET_ACCOUNT]: (_state, userinfo) => {
    _state.userinfo = userinfo;
    setUsername(userinfo.firstname);
  },
  [SET_ACCOUNT]: (_state, userinfo) => {
    _state.userinfo = userinfo;
    if (userinfo.firstname) {
      setUsername(userinfo.firstname);
    } else {
      clearUsername();
    }
  }
};

定义action方法,异步触发更新state

const actions = {
  async setAccount({ commit },params) {
    const { data,status, message } = await accountApi.saveAccount(params);
    if (status) commit(SET_ACCOUNT, data);
    return { data,status, message };
  },
  async getAccount({ commit }) {
    const { data,status, message } = await accountApi.getAccount();
    commit(GET_ACCOUNT, data);
    return { data,status, message };
  }
};

对应文件把state在computed里都map过来

  computed: {
    footer() {
      return {
        mobileMode: 'none'
      };
    },
    ...mapState('account', ['userinfo'])
  },

把对应方法在method里map过来

  methods: {
    ...mapActions('account', ['setAccount']),
// 调用全局方法setAccount更新store里的值
   async setAccountBirth(date) {
        const { status, message } = await this.setAccount({
            profile: {dob: date}
        });
        // do something
    }

相关文章

  • 【vuex】状态管理器store、mutation、state

    VueX 一个专门为 Vue.js 应用设计的状态管理架构,统一管理和维护各个vue组件的可变化状态。适合在需要多...

  • vuex梳理

    store => vuex文件名 state => 存放状态(数据) mutation => 定义修改数据的方法,...

  • 快速入门Vuex 魔法

    Vuex核心 Store State Mutation Action Module Vuex 的工作流程图 下面我...

  • vuex Mutation

    Mutation 更改Vuex的store中的状态的唯一方法是提交mutation。Vuex中的mutation非...

  • react之Redux

    回顾Vuex 核心内容 store树存储所有module,state,getter,mutation,action...

  • Vuex--Module

    Vuex可以将store分割成模块(module)。每个模块拥有自己的state、mutation、action、...

  • vuex---核心概念Mutation

    Mutation 更改 Vuex 的 store 中状态的唯一方法是提交 mutation。Vuex 中的 mut...

  • vuex-Mutation

    更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。Vuex 中的 mutation 非常...

  • vuex_Mutation_04

    Mutation 更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。Vuex 中的 mu...

  • Vuex--Mutation

    Mutation 更改Vuex的store中的状态的唯一方法就是提交mutation。Vuex 中的 mutati...

网友评论

      本文标题:【vuex】状态管理器store、mutation、state

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