У меня возникли проблемы с пониманием / использованием 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);
},
смог сделать то, что хотел, но это не правильно.По мере усложнения объекта мутацией будет трудно управлять.