Комментарии 7
В планах полный переход на функциональные компоненты? Уже почти 26 год, а вы до сих пор классовыми компонентами пользуетесь? Ну тут даже сказать нечего...
React работает банально - рискует DOMHTML по заданным данным. Если вы не запустили рендер то и не нарисует. А не потому что изменяемые или не изменяемые
В JS есть замечательный механизм Reflection, который позволяет отслеживать любые изменения объектов. Интересно, почему React его не использует под капотом?
Есть библиотеки которые могут помочь (в зависимости от задачи), тот же Zustand, immutable.js, и другие. Ещё официальная документация объясняет эти же принципы довольно хорошо, применимо к функциональным компонентам https://react.dev/reference/eslint-plugin-react-hooks/lints/immutability
@Alek_Che А вас в первом примере смущает только мутирование данных? То, что там три вложенных итерации со сложностью size(fieldsRef) * size(hierarchy.ref) * size(fields) - не смущает?
Можно не перебирать поэлементно коллекцию fields, а хранить в Object или Map с ключом name, и получать нужный field за константное время (и ведь fields уже лежит в объекте в формате key-value, осталось только сделать правильный key, ну или не менять формат хранения, а за один проход по fields построить индекс по name).
«Баги из ниоткуда»: почему компоненты React ломаются «сами по себе» и как это исправить