Я начал использовать Vuex в новом проекте, и он мне действительно нравится.Но я до сих пор не понимаю, как мне эффективно управлять состоянием элементов массива?
Взгляните на пример.
Предположим, я открываю страницу, и следующий ответ загружается избэкэнд:
{
"reportName": "Parent name",
"groups": [
{
"id": 1,
"name": "child group name 1",
"elements": [
{
"id": 1,
"name": "sub-child el 1",
"enabled": false
},
...
]
},
...
]
}
Сущность имеет массив дочерних сущностей.И у каждого дочернего элемента есть дочерний элемент.
Теперь предположим, что у меня есть выделенный компонент для отображения каждого уровня: родительский объект, каждый дочерний элемент (группа) и дочерний элемент.
Существуетфлажок в дочернем компоненте, который связан с полем enabled
.
В Vuex я не должен вносить изменения в состояние напрямую.
Поэтому, когда я нажимаю флажок, Vue редактирует состояние, используя мутация и здесь я вижу 2 проблемы:
- Чтобы зафиксировать мутацию дочернего элемента, мне нужно знать идентификатор группы (идентификатор дочернего элемента) в дочернем компоненте.
Это вынуждает меня передавать идентификатор группы в качестве параметра дочернему компоненту, который увеличивает связывание компонентов. - Также, когда я изменяю состояние, мне нужно сканировать два массива по идентификаторам (сначала найдите дочерний элемент)(группа), а затем найти дочерний элемент)
Я думаю, что я что-то упустил, и я мог бы изменить состояние более эффективным способом.
А также это, вероятно, не нужно для sub-детей знатьк какой группе он принадлежит.
У меня есть пара мыслей о том, что я мог бы сделать:
- Нужно ли превращать массивы в объекты после выборки из бэкэнда для более быстрого доступа кЯ бы?
- Нужно ли каким-либо образом регистрировать подмодуль для каждого элемента массива?
Я хотел бы, чтобы вы сообщили мне, что я делаю неправильно, и указали правильное направление для эффективногоиспользовать Vuex для управления состоянием массивов