我觉得我在正确理解/使用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);
},
能够做到我想要的,但是感觉不正确。随着对象变得越来越复杂,突变将变得难以管理。