10月27日总结

发布时间 2023-11-05 08:47:07作者: lmyyyy

好,经过上一篇的介绍,实现了 Vuex 当中的 actions 方法,接下来我们来实现 Vuex 当中的模块化共享数据(modules)。

modules 方法用于模块化共享数据,那么什么叫模块化共享数据呢?其实非常简单。

过去我们将所有模块的数据都放到 state 中共享,例如:

我们有三个模块 首页 / 个人中心 / 登录,那么我们就会将这三个模块的数据都放到 state 中,但是这样会导致命名匮乏的问题。

比如说首页中需要共享name, 个人中心中也需要共享name / 登录中也需要共享name,并且这三个name的取值还不一样, 那么为了能把这三条数据放到同一个state中, 我们就必须指定不同的名称, 例如:

state:{
homeName: 'www',
accountName: 'BNTang',
loginName: 'top'
}

这样就会导致命名匮乏的问题,而且如果我们的项目足够大,那么我们的 state 中就会有很多的数据,这样就会导致我们的 state 中的数据非常多,而且不好管理。

为了解决这个问题,Vuex 就推出了模块化共享数据的方法,那么什么叫模块化共享数据呢?模块化共享数据就是将不同模块的数据放到不同的模块(state)中,这个就是模块化共享数据。

那么模块化共享数据怎么做呢,我们先不要管怎么做,我们先来看看模块化共享数据的好处。

我们还是拿上面的例子来说,我们有三个模块 首页 / 个人中心 / 登录,那么我们就会将这三个模块的数据都放到 state 中,但是这样会导致命名匮乏的问题。

好,到这里我们已经知道了模块化共享数据的好处,我们先来用一下模块化共享数据。

我先不管三七二十一,我在 Store 对象的 store 中定义了一个全局的数据 globalName 取值为 BNTang,

定义完毕之后呢,这个 globalName 代表着全局的数据,那么我们就可以在任何一个模块当中使用这个数据,那么接下来怎么办,例如这个时候我有两个模块分别是首页与个人中心,这两个模块中分别有一个 name 数据,这两个 name 该如何做呢,好我先写代码再来解释。

let home = {
state: {
name: '首页'
},
getters: {},
mutations: {},
actions: {}
}

如上的代码和 Store 中有一套相同的结构,这个对象中保存着首页的 name,保存完毕了之后,还没添加到 Store 中,那么如何添加到 Store 中呢,其实很简单,我们只需要在 Store 中的 modules 中添加这个模块就可以了。

modules: {
home: home
}

如上代码的写法就代表着,我们 Store 除了保存了全局的共享数据以外还保存了首页模块的共享数据,那么我们的个人中心数据该如何做呢,其实也是一样的(也是同一个世界,同一个梦想的),我们来写一个个人中心的模块。

let account = {