前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >像高手一样重置Vuex的state

像高手一样重置Vuex的state

作者头像
前端黑板报
发布2019-09-25 16:32:48
4.1K0
发布2019-09-25 16:32:48
举报
文章被收录于专栏:前端黑板报前端黑板报

背景描述

Vuex对于管理你的Vue应用很有用,但是如果你的应用很大,同时又把所有的应用状态放到单个状态对象上则会变的低效且难以维护。这种情况下,则需要分割到多个小的modules中。

一个Vuex的module可以代表任何你应用中可独立分割的部分,例如:代表一个弹框、多步骤表单、购物车等等。

这些modules的状态肯定会随着应用的运行不时的变动,让我们以购物车为例,一个购物车会包含用户添加的商品列表,这个列表会在用户删除或者付款后被清除。

在Vuex的术语中,清空购物车意味着重置module的状态。所以如果列表有数据,我们则会使用空数组来替换它。

实际操作

还是继续我们的购物车例子,我们将module存放在modules目录下,就像这样:

代码语言:javascript
复制
store
├── index.js
└── modules
    └── cart.js

下面就是cart.js如何重置状态的代码:

代码语言:javascript
复制
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,返回一个全新的默认状态对象。我们两个地方使用到它:初始化的时候以及重置的时候。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端黑板报 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档