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

Возможно кто-то знает как полностью обновить все компоненты. Когда я

меняю язык программы, мне нужно, чтобы все компоненты осуществили ререндер, как это сделать?

10 ответов

8 просмотров

самому рутовому компоненту вашего приложения можно выставить key={lang} и при обновлении этого компонента будет полный апдейт

Artur Eshenbrener
самому рутовому компоненту вашего приложения можно...

Не. Только до PureComponent, sCU и memo, дальше этот апдейт не пойдет )

Никак. Нет таких средств.

Gena Black
Не. Только до PureComponent, sCU и memo, дальше эт...

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

Artur Eshenbrener
Могу ошибаться, но вроде как нет. Потому что при и...

А... гм... возможно... это надо проверить на самом деле

Gena Black
А... гм... возможно... это надо проверить на самом...

Скажем так - я такой хак использовал ровно для этого (когда мне надо было точно перемаунтить компоненты ниже по дереву), и оно меня не подводило

Artur Eshenbrener
Скажем так - я такой хак использовал ровно для это...

Вот я поэтому написал "проверить"... мне кажется в этом случае будет не ререндер, а ремаунт (т.е. построится новое дерево). Это может иметь довольно далеко идущие последствия если под рутом будет навигация, провайдеры всяких сторов, и прочих сервисных вещей

Gena Black
Вот я поэтому написал "проверить"... мне кажется в...

Да, скорее всего будет именно ремаунт. Если нужен именно ререндер, то можно попробовать из кишков реакта достать все инстансы компонентов, и сделать им forceUpdate()

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
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
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Карта сайта