首页 > 解决方案 > 如何构建我的商店并处理嵌套数据?

问题描述

我觉得我无法正确理解/使用 Vuex。我了解动作之间的基本知识,执行的某些操作可能会或可能不会调用突变方法,以及直接修改状态的突变。

我正在为如何构建我的商店而苦苦挣扎。快速上下文,我希望能够创建、更新帖子以及对特定帖子执行诸如(评论、评级、编辑等)之类的操作。

前任。岗位结构

post:
    id: UUID
    content: String
    user: [Object] <- nested
    images: [[String]]
    rating_avg: Float
    rating_count: Int
    created: Datetime

目前,我有一个包含帖子的提要商店,并有一个用于获取初始帖子和获取更多帖子的操作以及一个用于将帖子插入状态的突变。

现在我希望能够评论或评价帖子,但我在哪里可以做到这一点?如果我想重用提要存储,我只需要 state.posts.find(...postID...) 然后是评论或评分的突变,我是创建一个单独的存储来管理与帖子相关的操作还是只是转储这个逻辑到组件本身,这可能会将未来的操作分离成多个组件和/或存储的混合。

附带说明一下,是否必须对您要在商店中更改的每个值进行突变?对每个值(如评级、创建、内容等)进行变异似乎非常乏味。这似乎只会在数据嵌套时变得更糟。

客户端使用的一些上下文:

它充当供稿(帖子列表),您可以查看基本信息、标题、内容、查看次数、评分。您可以执行一些快速操作,例如评分、评论。

当您对某事物进行评分时,后端将使用 rating_avg 和 rating_count 进行响应,这应该会更新被评分的特定帖子中的评分信息。

我找到

  [SET_POST_RATING_AVERAGE](state, { post, rating }) {
    Vue.set(post, "rating_average", rating);
  },

能够做我想做的事,但感觉不正确。随着对象变得更加复杂,突变将难以管理。

标签: vue.jsvuex

解决方案


推荐阅读