Как структурировать свои магазины и работать с вложенными данными? - PullRequest
0 голосов
/ 04 апреля 2019

У меня возникли проблемы с пониманием / использованием 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);
  },

смог сделать то, что хотел, но это не правильно.По мере усложнения объекта мутацией будет трудно управлять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...