背景描述
Vuex对于管理你的Vue应用很有用,但是如果你的应用很大,同时又把所有的应用状态放到单个状态对象上则会变的低效且难以维护。这种情况下,则需要分割到多个小的modules中。
一个Vuex的module可以代表任何你应用中可独立分割的部分,例如:代表一个弹框、多步骤表单、购物车等等。
这些modules的状态肯定会随着应用的运行不时的变动,让我们以购物车为例,一个购物车会包含用户添加的商品列表,这个列表会在用户删除或者付款后被清除。
在Vuex的术语中,清空购物车意味着重置module的状态。所以如果列表有数据,我们则会使用空数组来替换它。
实际操作
还是继续我们的购物车例子,我们将module存放在modules目录下,就像这样:
store
├── index.js
└── modules
└── cart.js
下面就是cart.js如何重置状态的代码:
const getDefaultState = () => {
return {
items: [],
status: 'empty'
}
}
// initial state
const state = getDefaultState()
const actions = {
resetCartState ({ commit }) {
commit('resetState')
},
addItem ({ state, commit }, item) { /* ... */ }
}
const mutations = {
resetState (state) {
Object.assign(state, getDefaultState())
}
}
export default {
state,
getters: {},
actions,
mutations
}
代码的核心是创建一个工厂函数:getDefaultState,返回一个全新的默认状态对象。我们两个地方使用到它:初始化的时候以及重置的时候。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有