关于vuex 的模块开发和使用

1、文件结构
在这里插入图片描述
2、modules 文件内容

例子: ccc.js 文件内容如下:

// 基础配置项
const state = {
  aa: []
}

const mutations = {
  setaa (state, data) {
    state.aa= data
  }
}

const actions = {}
export default {
  namespaced: true, 
  state,
  mutations,
  actions
}
**注意:::**
// namespaced为true的作用是告诉vuex,该模块所有的state 、mutations、actions里面的东西调用时都需要加上命名空间,这个命名空间就是该模块被improt时命名的名字。

3、getters.js 文件

const getters = {
  control: (state) => state.ccc.aa,
  // 此处为了 集合 gettees 数据 通过辅助函数使用: 注意写法 state.文件名字.参数名字(即哪个文件下的那个参数)
}
export default getters

4、index.js 文件:把state 和 getters 挂载到vuex 上

import Vue from 'vue'
import Vuex from 'vuex'
import getters from './getters'

Vue.use(Vuex)

const modulesFiles = require.context('./modules', true, /\.js$/)

const modules = modulesFiles.keys().reduce((modules, modulePath) => {
  // set './app.js' => 'app'
  const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1')
  const value = modulesFiles(modulePath)
  modules[moduleName] = value.default
  return modules
}, {})

const store = new Vuex.Store({
  modules,
  getters
})

export default store

注意使用: 在vue文件中 引入 辅助函数
1、引入 import { mapGetters } from ‘vuex’
2、在计算属性 computed 使用 辅助函数即可,

computed: {
    ...mapGetters(['control']), // 为getters 中的 字段名:::
}

参考:https://vuex.vuejs.org/zh/

vuex : 数据
1、state: 它便作为一个“唯一数据源 (SSOT)”而存在

2、getter: “getter”(可以认为是 store 的计算属性),第一个参数是 state,
mapGetters 辅助函数仅仅是将 store 中的 getter 映射到局部计算属性:

3、Mutation:更改 Vuex 的 store 中的状态的唯一方法是提交 mutation
并且它会接受 state 作为第一个参数
类似:methods:{ }
通过store.commit(‘方法名字’,参数二)进行更改 store 中的数据

4、Action: Action 类似于 mutation , 可以包含任意异步操作
Action 通过 store.dispatch 方法触发
store.dispatch(‘increment’)
使用 mapActions 辅助函数

5、Module :Vuex 允许我们将 store 分割成模块(module)

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vuex是一个专为Vue.js应用程序开发的状态管理模式。它允许我们在应用的不同组件间共享和管理状态。在Vuex中,可以通过模块化的方式来组织和管理不同部分的状态。 使用Vuex模块调用mutation非常简单。首先,我们需要在store文件夹中创建一个新的模块文件。 在这个模块文件中,我们可以定义自己的状态state、修改状态的mutation以及处理异步操作的action。接着,我们需要在store文件夹的index.js文件中导入新创建的模块,并将其添加到modules对象中。 最后,我们就可以在组件中使用this.$store来调用模块中定义的mutation了。我们可以使用mapMutations方法将mutation映射到组件的methods中,然后就可以在组件中直接调用映射的方法来修改模块中的状态了。 例如,假设我们有一个模块叫做user,其中定义了一个mutation叫做SET_USER,用于设置用户信息。那么我们可以在组件中使用以下方式来调用该mutation: 1. 导入mapMutations方法:import { mapMutations } from 'vuex'; 2. 将SET_USER mutation映射到组件的methods中:methods: { ...mapMutations('user', ['SET_USER']) } 3. 在需要修改用户信息的地方调用SET_USER方法:this.SET_USER(userInfo); 通过以上的步骤,我们就可以在组件中调用模块中的mutation,并且将相关的状态进行修改了。 总之,Vuex模块调用mutation非常方便。我们只需要按照上述步骤在store文件夹中创建新的模块文件,并将其导入并配置到index.js中,然后在组件中使用mapMutations方法来映射mutation并在需要的地方进行调用即可。这样可以使得代码更加模块化和可维护性更高。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值