vuex的store结构

方案一 参考vuex官网

  • store
    • index
    • modules
    • 不建议使用,每个文件可能会很大

方案二 参考文章

  • store
    • index
    • modules
      • chat 示例
        • actions.js
        • getters.js
        • mutations.js
        • index.js
      • products
        • actions.js
        • getters.js
        • mutations.js
        • index.js
      • 可使用,优点是结构清晰,开发人员之间相关联不多但是使用条件是模块不多,假如模块太多会出现很庞大的感觉(对于刚上手业务的人不友好)。

方案三参考文章

  • store
    • index
    • state
      • chat.js
      • products
    • actions
      • chat.js
      • products
    • getters
      • chat.js
      • products
    • mutations
      • chat.js
      • products
    • 不建议使用,结构比较乱

方案四参考文章

  • store
    • actions.js 调用mutation方法对数据进行复杂操作
    • getters.js 取用
    • mutation.js 操作里面定义的常用变量
    • mutation-types.js 存放vuex常用的变量
    • index.js 入口文件`
    • state.js 定义数据结构,一些数据状态
    • 可使用,个人认为使用条件是在全局vuex的store变量不多的情况。缺点是整体业务逻辑和结构不太清晰
### 如何在 Vuex Store 中存储和检索数据 Vuex 是 Vue.js 的状态管理库,用于集中管理和共享组件之间的状态。以下是关于如何在 Vuex Store 中存储和检索数据的具体方法。 #### 创建 Vuex Store 首先,在项目中创建一个 Vuex store 文件夹并初始化 `store.js` 或类似的文件: ```javascript // store.js import Vue from 'vue'; import Vuex from 'vuex'; Vue.use(Vuex); export default new Vuex.Store({ state: { items: [] // 初始状态变量 }, mutations: { addItem(state, newItem) { state.items.push(newItem); // 修改状态的方法 } }, actions: { addNewItem({ commit }, item) { setTimeout(() => { commit('addItem', item); // 提交 mutation 来更新状态 }, 1000); } }, getters: { allItems: (state) => state.items // 获取状态的计算属性 } }); ``` 上述代码定义了一个简单的 Vuex store 结构[^3],其中包含了以下几个部分: - **State**: 存储应用的状态。 - **Mutations**: 同步更改 State 的唯一方式。 - **Actions**: 处理异步逻辑并将结果提交给 Mutations。 - **Getters**: 类似于 Vue 组件中的 computed 属性,用于从 State 计算派生的数据。 #### 在组件中使用 Vuex Store ##### 存储数据到 Vuex Store 通过调用 Actions 方法来向 Vuex Store 添加新项: ```javascript methods: { saveDataToStore() { const newItem = { id: Date.now(), name: 'New Item' }; this.$store.dispatch('addNewItem', newItem); // 调用 action 更新 store 数据 } } ``` 此操作会触发 `addNewItem` Action,并最终通过 Mutation 将数据保存至 Store 的 `items` 数组中[^4]。 ##### 从 Vuex Store 检索数据 可以通过 Getters 和 MapState 辅助函数轻松访问存储在 Vuex Store 中的数据: ```javascript computed: { ...mapState(['items']), // 使用 mapState 映射 state 到本地计算属性 filteredItems() { return this.$store.getters.allItems.filter(item => !item.isDeleted); // 过滤未删除的条目 } }, ``` 这里展示了两种不同的方式来获取数据:一种是直接映射整个 `items` 状态;另一种则是利用 Getter 对原始状态进行过滤处理后再返回所需的结果[^5]。 #### 总结 以上介绍了如何构建一个基础版本的 Vuex Store 并实现对其内部数据的操作流程——即存入与取出过程。这不仅有助于理解 Vuex 工作机制的核心原理,还能够帮助开发者更好地组织大型应用程序内的全局状态管理方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值