Состояние React должно быть неизменным, поскольку React использует поверхностное сравнение для проверки на равенство.При сравнении скалярных значений (чисел, строк) сравниваются их значения.При сравнении объектов он не сравнивает их атрибуты - сравниваются только их ссылки (например, «они указывают на один и тот же объект?).
Карты ES6 не являются неизменяемыми и оптимизированы для изменяемостивот почему не рекомендуется использовать их в React как есть. React не будет знать, обновлена карта или нет.
var map1 = new Map();
var map2 = map1.set('b', 2); // mutate map
map1 === map2; // true because reference remain unchanged after mutation
Вы можете использовать Карты, если хотите, но вам нужно использовать некоторый помощник по неизменяемости, напримерImmutable.js
. В следующем примере используется неизменяемая карта
const { Map } = require('immutable');
const map1 = Map({ a: 1, b: 2, c: 3 });
const map2 = map1.set('b', 2); // Set to same value
map1 === map2; // true
const map3 = map1.set('b', 4); // Set to different value
map1 === map3; // false
Ссылки:
https://github.com/reduxjs/redux/issues/1499#issuecomment-194002599 https://stackoverflow.com/a/36084891/2073920