Я работаю над приложением React + redux + Immutable.js + Reselect. Я рассматриваю проект, в котором я использую Immutable.js в редукторах и сагах, но не хочу связывать эту библиотеку с интеллектуальными компонентами, поэтому моя презентационная часть приложения должна быть как можно более чистой.
Согласно документации redux ваши селекторы всегда должны возвращать неизменяемый объект.
Моя идея состоит в том, чтобы вычислить производное состояние в селекторе повторного выбора и вернуть простой объект JS. Если я использую мемоизированный селектор, новый объект не будет создаваться при каждом вызове, если лежащая в основе часть состояния redux одинакова, поэтому мой компонент не будет повторно отображен без необходимости.
Я знаю, что частично заплачу компоновкой, поскольку селектор нельзя использовать в качестве входных данных для других селекторов, готовых к Immutable.js, но я получу гораздо более чистые интеллектуальные компоненты.
Есть ли у такого решения еще какие-то недостатки?
Почему в документации redux так настоятельно рекомендуется передавать неизменяемый объект интеллектуальным компонентам?