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

Всем привет, подскажите если поймете, у меня в стейте есть

массив с числами типо array = [0, 0, 0, 0, 0, ... , 0]; я вывожу компоненты (кнопки) для каждого итема массива, по клику на кнопку я меняю соответствующее число в массиве, и уже от этого меняю цвет кнопки, если скажем кликнули на первую кнопку, то в стейте уже будет array = [1, 0, 0, 0, 0, ... , 0];
вопрос вот в чем, каждый раз при клике все кнопки заново рендерятся, и получается что если у меня в массиве 1000 кнопок, а мы кликнули только на 1, то они все заново перерисовались, можно ли сделать чтобы менялась только одна кнопка? (вопрос по оптимизации)

11 ответов

15 просмотров

через useMemo. Короче делаешь функциональный аналог классового componentShouldUpdate (в доке есть). И привязываешь к пропу который будет предыдущий с пришедшим сравнивать, через который реакт понимает - надо ему заного рисовать этот компонент или нет

можешь через memo мемоизировать кнопки

🐆- Автор вопроса

пробовал, тогда вообще ничего не меняется)

если че то рендерится массив и данные сверху хуки не помогут в такой мемоизации

🐆- Автор вопроса

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

не понял. Кода перед глазами нет. Я его кейс представляю так. Есть массив. Мы его мэппим в компоненты, в каждый компонент прокидываем ключ и значение. В этом компоненте внутри можно сравнивать - изменилось ли значение - и мемоизировать. Если еще будет уникальный ключ - то это вообще шик. И все будет работать. Что не так то?)

ты чет совсем не понял как работает мемоизация и зачем хук на мемо

Я то как раз понял. Через него мы можем сделать функциональный аналог shouldComponentUpdate - что ему и нужно, для оптимизации. Но это естественно не главная задача того, что делает useMemo. Просто его так можно использовать

useMemo ? ты не путаешь с memo ?

Путаю. Сори, ааххах.

https://codesandbox.io/s/hungry-framework-do1qe?file=/src/App.js вот накидал тебе простейшую песочницу

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
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...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно 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
Карта сайта