Есть ли другие недостатки такого решения?
toJS
- дорогостоящая операция, даже если она запомнена. Аргумент, почему toJS
, если вам не нужно?
Почему избыточная документация так сильно поощряет передачу неизменных объектов в интеллектуальные компоненты?
Вышеупомянутое, плюс это облегчает рассуждение обо всем конвейере редукса, то есть любые мутации (побочные эффекты / морфизмы) в состояние легче обернуть голову вокруг, поскольку есть ясный поток и точка, где происходят изменения.
С учетом всего сказанного все сводится к предпочтениям и тому, где чувствуются узкие места / компромиссы в архитектуре. Если вы чувствуете, что чистое разделение перевешивает потенциальные риски / предостережения с наличием toJS
в селекторе, то это правильный вызов для вашей архитектуры.
В примечании, касающемся потери компоновки в селекторе, у вас всегда могут быть два селектора: один, который возвращает неизменяемое состояние - используется для композиции селектора, и тот, который использует неизменяемый селектор состояния и вызывает toJS
, где необходимо.