Blog>
Snippets

Adapting Vuex Store for Mobile Devices

Modify the Vuex store for efficient state management in a mobile environment, focusing on performance optimizations like using Vuex modules.
import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

// Define a module for user-specific state
const userModule = {
  state: () => ({
    // User related state variables
    profile: null
  }),
  mutations: {
    // Mutation to update user profile
    updateProfile(state, profile) {
      state.profile = profile;
    }
  },
  actions: {
    // An action to asynchronously fetch and update the user profile
    fetchProfile({ commit }) {
      // Simulate a fetch call
      setTimeout(() => {
        const profileData = { name: 'John Doe', email: 'john@example.com' };
        commit('updateProfile', profileData);
      }, 1000);
    }
  },
  getters: {
    // Getter to access user profile state
    userProfile(state) {
      return state.profile;
    }
  }
};

export default new Vuex.Store({
  modules: {
    // Register userModule under the user namespace
    user: userModule
  },
  // Enable strict mode in development to ensure state is
  // mutated only through mutations and not directly
  strict: process.env.NODE_ENV !== 'production'
});
This code sets up a Vuex store using modules to optimize the management of state on mobile devices. The userModule handles the state related to the user's profile and includes state variables, mutations, actions, and getters. The store is then created with this module, and strict mode is enabled only in development to ensure proper mutation of the state.