в реакте.
Можно сказать, что я пишу нечто похожее на vscode. Есть панель слева, показывающая дерево объектов, которые рендерятся рекурсивно, словно файл explorer. Панель справа редактирует выбранный объект.
Как по-умному передать кликнутый слева объект из дерева в панель для редактирования? Нормально ли объявить функцию в корне реакт дерева, которая должна захватывать выбранную ноду, и передавать ее каждому элементу дерева, чтобы потом в том же корне реакт дерева я могла передать выбранную ноду через пропсы во вторую панель? или лучше использовать контекст? (пока что мало представляю как их использовать)
Спасибо за внимание!
хранить все в стэйт-мэнеджере (redux-toolkit/mobx/effector/reatom по вкусу) и вызывать из СМ нужный метод и передавать в него ИД узла в котором у тебя слева объект по которому ты клик делаешь а вся обработка уже внутри метода в СМ
можно еще через роутер наверно попробовать страница редактора пусть параметр обрабатывает, в котором в адресной строке ИД будет передан
Спасибо, роутер может быть и подойдет. А если сделать более фундаментально и своими руками, только средствами react, то это будет слишком сложно?... Проще изучить новую технологию? Или может быть контексты все-таки могут подойти и мне стоит их посмотреть?
контекст (useContext) имеет недостатки например вызывает обязательный ререндер всего дерева компонентов которое оборачивает. Это естественно надо учитывать в то же время например redux-toolkit вызывает перерендеры только тех компонентов, которые подписаны на изменение каких-то элементов его стора. В общем СМ немного проще пользовать и там очень много уже готовых оптимизаций, которые вы можете просто не учесть например при использовании useContext (так как их там по умолчанию нет)
Интересно… тогда попробую изучить redux. благодарю за развернутый ответ 😺
Ну не обязательно именно redux, я несколько писал Другие вроде удобнее, правда redux самый распространненый Ну и самый неудобный ))
начинай с эффектора сразу
Я помню как-то демку скачал effector Я найти не мог там код который к самому effector относился Ну типа привык портяyкам на redux )) И только потом где то в каком-то файле увидел несколько строчек, которые всю логику демки воплощали )) на редаксе было бы больше раз в 20 ))
Обсуждают сегодня