vue.js - 如何构建我的商店并处理嵌套数据?
问题描述
我觉得我无法正确理解/使用 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);
},
能够做我想做的事,但感觉不正确。随着对象变得更加复杂,突变将难以管理。
解决方案
推荐阅读
- amazon-web-services - 跨账户 Cloudformation 宏
- azure-devops - 在 Azure Devops 中添加其他板
- html - CSS Grid 中的 `span 1/ span 1` 是什么意思?
- php - 多重身份验证登录不会重定向到正确的链接
- c# - .NET Core Entity Framework Fluent api 错误,DateTime 属性将文本作为列类型
- pandas - GroupBy 唯一聚合并在熊猫中具有特定条件
- javascript - 如何使用排除搜索猫鼬
- javascript - 将组件传递给“组件”而不是“
" - mysql - 如何使用子查询从mysql中的表中删除数据
- reactjs - p5.js mousePressed 事件返回未定义