详解在Vue中如何模块化使用Vuex

 更新时间:2024年01月24日 11:56:41   作者:JacksonChen_  
这篇文章给大家介绍了在Vue 中如何模块化使用 Vuex,文中通过代码示例给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下

正常使用

// src/store/index.js
 
import Vue from 'vue';
import Vuex from 'vuex';
 
Vue.use(Vuex);
 
export default new Vuex.Store({
  state: {
    count: 0, // 一个简单的状态示例
  },
  mutations: {
    increment(state) {
      state.count++;
    },
    decrement(state) {
      state.count--;
    },
  },
  actions: {
    increment(context) {
      context.commit('increment');
    },
    decrement(context) {
      context.commit('decrement');
    },
  },
  getters: {
    getCount: state => state.count,
  },
});

在组件中使用 Vuex: 在需要访问或修改状态的组件中,你可以使用Vuex提供的辅助函数。

// src/components/Counter.vue
 
<template>
  <div>
    <p>Count: {{ count }}</p>
    <button @click="increment">Increment</button>
    <button @click="decrement">Decrement</button>
  </div>
</template>
 
<script>
import { mapState, mapActions } from 'vuex';
 
export default {
  computed: {
    ...mapState(['count']),
  },
  methods: {
    ...mapActions(['increment', 'decrement']),
  },
};
</script>

模块化使用 

优点

在个人小项目当中,不使用模块化没什么问题,但是在公司或者大型项目下就需要使用模块化管理,使用模块化有利于可维护性、团队协作、代码结构清晰、提高可读性等优点。

假设你有两个模块,一个用于管理用户信息,另一个用于管理商品信息。

首先,分别创建两个 Vuex 模块文件:

模块文件

userModule.js

// userModule.js
const state = {
  user: null,
  userName:"张三"
};
 
const mutations = {
  SET_USER(state, user) {
    state.user = user;
  },
};
 
const actions = {
  setUser({ commit }, user) {
    commit("SET_USER", user);
  },
};
 
export default {
  namespaced: true,
  state,
  mutations,
  actions,
};

productModule.js

// productModule.js
const state = {
  products: [],
  productName:'电脑'
};
 
const mutations = {
  ADD_PRODUCT(state, product) {
    state.products.push(product);
  },
};
 
const actions = {
  addProduct({ commit }, product) {
    commit("ADD_PRODUCT", product);
  },
};
 
export default {
  namespaced: true,
  state,
  mutations,
  actions,
};

集中模块的状态到 Getters,方便页面中使用

在根级 Vuex Store 中创建 Getters,用于集中所有模块的状态数据:

getters.js

// getters.js
export default {
  userName: state => state.user.userName,
  productName: state => state.product.productName,
};

创建根级的 Vuex Store 文件,将上述的模块引入并注册:

store.js

import Vue from 'vue';
import Vuex from 'vuex';
import userModule from './userModule';
import productModule from './productModule';
import getters from './getters'; // 导入 getters 为对象
 
Vue.use(Vuex);
 
const store = new Vuex.Store({
  modules: {
    user: userModule,
    product: productModule,
  },
  getters,
});
 
export default store;

页面使用

<template>
  <div>
    <h1>User Name: {{ userName }}</h1>
  </div>
</template>
 
<script>
export default {
  computed: {
    userName() {
      return this.$store.getters.userName;
    }
  },
  mounted() {
    this.$store.dispatch("user/setUser", { userName: "John Doe" });
    this.$store.dispatch("product/addProduct", { name: "Product A" });
  },
};
</script>

到此这篇关于详解在Vue中如何模块化使用Vuex的文章就介绍到这了,更多相关Vue模块化使用Vuex内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅谈Vue组件单元测试究竟测试什么

    浅谈Vue组件单元测试究竟测试什么

    这篇文章主要介绍了浅谈Vue组件单元测试究竟测试什么,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • 在vue自定义组件中使用 v-model指令详情

    在vue自定义组件中使用 v-model指令详情

    这篇文章主要介绍了在vue自定义组件中使用 v-model指令详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-06-06
  • vue3+el-select实现触底加载更多功能(ts版)

    vue3+el-select实现触底加载更多功能(ts版)

    这篇文章主要给大家介绍了基于vue3和el-select实现触底加载更多功能,文中有详细的代码示例,感兴趣的同学可以借鉴参考下
    2023-07-07
  • Vue CLI4 Vue.config.js标准配置(最全注释)

    Vue CLI4 Vue.config.js标准配置(最全注释)

    这篇文章主要介绍了Vue CLI4 Vue.config.js标准配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • vue实现excel文件的导入和读取完整步骤

    vue实现excel文件的导入和读取完整步骤

    Vue的数据绑定功能非常强大,很适合用来读取Excel内容,这篇文章主要给大家介绍了关于vue实现excel文件的导入和读取的相关资料,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • vue中刷新子组件重新加载子组件三种方法

    vue中刷新子组件重新加载子组件三种方法

    组件是Vue.js最强大的功能之一,组件可以扩展HTML元素,封装可重用的代码,这篇文章主要给大家介绍了关于vue中刷新子组件重新加载子组件三种方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • vue: WebStorm设置快速编译运行的方法

    vue: WebStorm设置快速编译运行的方法

    今天小编就为大家分享一篇vue: WebStorm设置快速编译运行的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • web面试MVC与MVVM区别及Vue为什么不完全遵守MVVM解答

    web面试MVC与MVVM区别及Vue为什么不完全遵守MVVM解答

    这篇文章主要介绍了web面试中常问问题,MVC与MVVM区别以及Vue为什么不完全遵守MVVM的难点解答,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-09-09
  • vue实现页面滚动到底部刷新

    vue实现页面滚动到底部刷新

    这篇文章主要为大家详细介绍了vue实现页面滚动到底部刷新,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀

    vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀

    这篇文章主要介绍了vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀的相关知识,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-06-06

最新评论