Я пытался научиться лучше структурировать свои магазины Redux и наткнулся на этот урок Дэна.
https://egghead.io/lessons/javascript-redux-normalizing-the-state-shape#/guidelinesModal
Хотя я понимаю, как это сделать, чтобы нормализовать мои данные, я не понимаю мотивацию. В частности, у меня есть два вопроса.
-
Почему обычно достаточно простых массивов? Дэн упоминает: "В сложных приложениях у нас может быть более одного массива, и todos с одинаковыми идентификаторами в разных массивах может выйти из синхронизации". Я этого не понял, могу ли я привести пример? Единственное преимущество, которое я вижу в использовании объекта, - это повышение эффективности, поскольку нам не нужно отображать весь массив, если я хочу делегировать определенное todo другому редуктору.
-
Почему нам нужно поддерживать список allIds? Зачем поддерживать это дополнительное состояние, когда мы можем легко перечислить список всех todos и получить его?
Я знаю, что нормализует это для нас, но почему мы должны нормализовать в первую очередь? Имеет ли смысл нормализовать, даже если ответы не глубоко вложены?
Изменить 1:
Спасибо за ваш ответ, Кристофер.
Предположим, что ваше государственное дерево выглядит так
{
user: {
byId: {
1: {
id: 1,
name: 'Buy stuff'
},
2: {
id: 2,
name: 'Yeah'
}
}
},
allIds: [1, 2],
subscribedIds: [5],
}
department: {
byId: {
5: {
id: 5,
name: 'Sell Stuff'
}
},
allIds: [5],
subscribedIds: []
}
}
Я не вижу преимущества наличия объекта вместо массива здесь. Я мог бы также иметь селекторы, которые могли бы получить подписанный todo по ID из отделов, даже если это массив. По-моему, мое понимание концепции немного неполноценно. Не могли бы вы рассказать?