169 похожих чатов

Здравствуйте архипрограммисты и архипрограммистессы. Помогите пожалуйста решить задачу, я новичок

в реакте.
Можно сказать, что я пишу нечто похожее на vscode. Есть панель слева, показывающая дерево объектов, которые рендерятся рекурсивно, словно файл explorer. Панель справа редактирует выбранный объект.
Как по-умному передать кликнутый слева объект из дерева в панель для редактирования? Нормально ли объявить функцию в корне реакт дерева, которая должна захватывать выбранную ноду, и передавать ее каждому элементу дерева, чтобы потом в том же корне реакт дерева я могла передать выбранную ноду через пропсы во вторую панель? или лучше использовать контекст? (пока что мало представляю как их использовать)
Спасибо за внимание!

8 ответов

16 просмотров

хранить все в стэйт-мэнеджере (redux-toolkit/mobx/effector/reatom по вкусу) и вызывать из СМ нужный метод и передавать в него ИД узла в котором у тебя слева объект по которому ты клик делаешь а вся обработка уже внутри метода в СМ

можно еще через роутер наверно попробовать страница редактора пусть параметр обрабатывает, в котором в адресной строке ИД будет передан

Mulünur- Автор вопроса
Rain
хранить все в стэйт-мэнеджере (redux-toolkit/mobx/...

Спасибо, роутер может быть и подойдет. А если сделать более фундаментально и своими руками, только средствами react, то это будет слишком сложно?... Проще изучить новую технологию? Или может быть контексты все-таки могут подойти и мне стоит их посмотреть?

Mulünur
Спасибо, роутер может быть и подойдет. А если сдел...

контекст (useContext) имеет недостатки например вызывает обязательный ререндер всего дерева компонентов которое оборачивает. Это естественно надо учитывать в то же время например redux-toolkit вызывает перерендеры только тех компонентов, которые подписаны на изменение каких-то элементов его стора. В общем СМ немного проще пользовать и там очень много уже готовых оптимизаций, которые вы можете просто не учесть например при использовании useContext (так как их там по умолчанию нет)

Mulünur- Автор вопроса
Rain
контекст (useContext) имеет недостатки например в...

Интересно… тогда попробую изучить redux. благодарю за развернутый ответ 😺

Mulünur
Интересно… тогда попробую изучить redux. благодарю...

Ну не обязательно именно redux, я несколько писал Другие вроде удобнее, правда redux самый распространненый Ну и самый неудобный ))

/ /
начинай с эффектора сразу

Я помню как-то демку скачал effector Я найти не мог там код который к самому effector относился Ну типа привык портяyкам на redux )) И только потом где то в каком-то файле увидел несколько строчек, которые всю логику демки воплощали )) на редаксе было бы больше раз в 20 ))

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта