# Estrutura

Iremos melhor o nosso store, para a seguinte estrutura:

index.js
state.js
actions.js
mutations.js
mutations_types.js
getters.js

./src/store/index.js

import Vue from 'vue';
import Vuex from 'vuex';

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

Vue.use(Vuex);

export default new Vuex.Store({
  ...state,
  ...actions,
  ...mutations,
  ...getters,
});

Agora iremos passar o conteudo de nosso store para cada arquivo:

./src/store/state.js

export default {
  state: {
    usuario: {
      conta: '',
      senha: '',
    },
  },
};

./src/store/actions.js

import types from './mutations_types';

export default {
  actions: {
    usuarioLogado(context, usuario) {
      context.commit(types.USUARIO_LOGADO, usuario);
    },
  },
};

./src/store/getters.js

export default {
  getters: {
    usuarioBemVindo(state) {
      return `Olá ${state.usuario.conta}!`;
    },
  },
};

./src/store/mutations.js

import types from './mutations_types';

export default {
  mutations: {
    [types.USUARIO_LOGADO](state, payload) {
      state.usuario = payload;
    },
  },
};

./src/store/mutations_types.js

export default {
  USUARIO_LOGADO: 'USUARIO_LOGADO',
};
  • Mapeando as mutations, conseguimos ter uma organização melhor.

No próxima capítulo iremos mostrar algumas bibliotecas que podem ser o game changer de seu projeto, nos vemos lá!

Próxima Seção