У меня есть проект React/Redux, в котором я использую Web Worker для расчета следующего состояния при отправке действия, а затем передаю новое состояние непосредственно в хранилище. , нравится:
let nextReducer = reducer => {
return (state, action) => {
if (action.type === 'WEBWORKER') {
return action.payload;
} else {
return reducer(state, action);
}
};
};
let store = createStore(nextReducer(rootReducer));
Проблема в том, что когда я вручную передаю новое состояние в хранилище избыточности, у состояния теперь есть новая ссылка, и библиотека reselect
не может правильно запомнить состояние. В результате представление всегда перерисовывается при каждом изменении состояния.
Дело в том, что я всегда думал, что у состояния всегда есть другая ссылка (даже без ручной установки), потому что правило состоит в том, что мы никогда не должны мутировать исходный объект состояния, но мы должны всегда возвращать новый. Итак, почему, если я использую свой rootReducer
как есть, reselect
работает нормально, а при настройке вручную - нет?