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

Подскажите, как можно убрать лишний рендер, у меня имеется: <Template header={header}> {myComponent} </Template> myComponent

обернуто в memo и возвращает функцию с версткой (нет в зависимости header)

и имеется селектор который получает инфу о header
как только приходит новый header, он перерендывает ВСЁ.

Почему? Можно ли MyComponent не перерендывать (там же новых пропсов нету)

17 ответов

12 просмотров

myComponent — это выражение, которое ты вычисляешь на каждом рендере

https://overreacted.io/react-as-a-ui-runtime/#inversion-of-control

Юрий- Автор вопроса
Ivan 🧑‍🚀
myComponent — это выражение, которое ты вычисляешь...

понял и что тогда делать? Как правильно поступить? У меня внутри темплейта { View1 || View2} Каждый раз вызывается, каждый раз перерендывается, как это оптимизировать?

Юрий- Автор вопроса
Ivan 🧑‍🚀
<MyComponent /> вместо {myComponent}

View 1 это const function = isView && <MyComponent/> View 2 это const function2 = switchCase на 10 разных компонентов

Юрий- Автор вопроса
Ivan 🧑‍🚀
<MyComponent /> вместо {myComponent}

поэтому хз как тут заменить, идей вообще нет

Юрий- Автор вопроса
Ivan 🧑‍🚀
<MyComponent /> вместо {myComponent}

я переписал свои 2 функции на компонент обертку, в котором эти 2 функции внутри и заюзал как <Component /> но этот <Component /> все равно рендерится когда меняться селектор

Юрий- Автор вопроса
Ivan 🧑‍🚀
Ну так ты его мемоизируй :)

методы внутри него или сам компонент?

Юрий- Автор вопроса
Ivan 🧑‍🚀
Ну так ты его мемоизируй :)

и я внутри него методы в memo обернул, и даже его записал как const componentWrapper = React.memo(Component)

Юрий
и я внутри него методы в memo обернул, и даже его ...

Всё правильно обернул. Только с большой буквы. И вот этот враппед рендерь через <... />

Юрий- Автор вопроса
Ivan 🧑‍🚀
Всё правильно обернул. Только с большой буквы. И в...

Так и делаю, все равно перерендыр выполняется

Юрий- Автор вопроса
Ivan 🧑‍🚀
Значит codesandbox.io

слишком много зависимостей, не реально выложить

Юрий- Автор вопроса
Ivan 🧑‍🚀
Значит codesandbox.io

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

Юрий
слишком много зависимостей, не реально выложить

Выделение куска кода, который воспроизводит некорректное поведение — хороший навык, пригодится. Ну и обычно сам находишь ошибку в процессе

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

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

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
Карта сайта