Нормализация состояния Redux / React - зачем поддерживать отдельный массив идентификаторов? - PullRequest
0 голосов
/ 27 ноября 2018

Следуя указаниям Дана Абрамова, здесь: https://egghead.io/lessons/javascript-redux-normalizing-the-state-shape

Кажется, он не объясняет преимущества поддержания дополнительного редуктора с массивом идентификаторов задач (allIds), не будет ли прощеесть только один редуктор byId и пользователь Object.keys или Object.values ​​для его перебора?

1 Ответ

0 голосов
/ 27 ноября 2018

В примере приложения Todo показан список задач, в том порядке, в котором они были созданы.Невозможно получить этот упорядоченный список таким образом, чтобы он гарантированно работал во всех браузерах, используя свойства Object и Object.keys.

JS Object, которые неупорядочены, но у массивов есть порядок.Таким образом, порядок вывода Object.keys() не гарантирует никакого отношения к порядку, в котором были добавлены ключи.Массив позволяет редуктору отображать задачи в том порядке, в котором они были добавлены.

Теоретически можно использовать Map, так как ключи в Map упорядочены.Тем не менее, нет способа переупорядочить содержимое Map.С помощью массива вы можете переупорядочивать идентификаторы, не касаясь самих объектов todo.

Другими словами, структура данных массива лучше подходит для хранения упорядоченных списков, чем Object и Map.

...