Я уверен, что это очень простой вопрос для решения, однако мои попытки не дали результатов, и ни один LLM не дает мне ответа, который работает. У меня есть приведенный ниже MemoifiedList, который работает нормально. Проблема в том, что в нем есть 50 пунктов, и каждый раз, когда изменяется один элемент, каждый элемент списка получает редернизацию, что вызывает отставание. < /P>
const [selectorInstruments, setSelectorInstruments] = useState({});
const InstrumentList = useMemo(() => {
return Object.values(selectorInstruments).map((selectorInstrument: InstrumentSelectorInstrument) => (
))
}, [selectorInstruments]);
< /code>
Ниже приведен элемент списка с использованием React.memo. Я попытался установить обратный вызов, чтобы проверить изменения поддержки, но обратный вызов даже не работает. У меня есть консоль.logged () внутри, чтобы убедиться, что каждый элемент рендеринг каждый раз. < /P>
const SelectorInstrumentItem = React.memo(({selectorInstrument}: { selectorInstrument: InstrumentSelectorInstrument}) => {
return {
e.stopPropagation();
handleDropdownItemEvent(e, selectorInstrument.id);
}}
>
});
< /code>
Ниже я обновляю SelectedItems. Он обновляет два из них, но, как я уже сказал, все 50 получают редернизацию < /p>
setSelectorInstruments(prevState => {
const newState: Record = {...prevState}
const newInstrument = newState[instrumentId];
if (newInstrument) {
newState[instrumentId] = {
...newInstrument,
view: instrumentInformation.view
}
}
const prevInstrument = newState[oldPrimaryInstrument.instrument.id];
if (prevInstrument) {
newState[oldPrimaryInstrument.instrument.id] = {
...prevInstrument,
view: oldPrimaryInstrument.view
}
}
return newState;
});
Подробнее здесь: https://stackoverflow.com/questions/795 ... item-basis
Как я могу запомнить объект JS на основе для каждого элемента? ⇐ Javascript
Форум по Javascript
-
Anonymous
1745390163
Anonymous
Я уверен, что это очень простой вопрос для решения, однако мои попытки не дали результатов, и ни один LLM не дает мне ответа, который работает. У меня есть приведенный ниже MemoifiedList, который работает нормально. Проблема в том, что в нем есть 50 пунктов, и каждый раз, когда изменяется один элемент, каждый элемент списка получает редернизацию, что вызывает отставание. < /P>
const [selectorInstruments, setSelectorInstruments] = useState({});
const InstrumentList = useMemo(() => {
return Object.values(selectorInstruments).map((selectorInstrument: InstrumentSelectorInstrument) => (
))
}, [selectorInstruments]);
< /code>
Ниже приведен элемент списка с использованием React.memo. Я попытался установить обратный вызов, чтобы проверить изменения поддержки, но обратный вызов даже не работает. У меня есть консоль.logged () внутри, чтобы убедиться, что каждый элемент рендеринг каждый раз. < /P>
const SelectorInstrumentItem = React.memo(({selectorInstrument}: { selectorInstrument: InstrumentSelectorInstrument}) => {
return {
e.stopPropagation();
handleDropdownItemEvent(e, selectorInstrument.id);
}}
>
});
< /code>
Ниже я обновляю SelectedItems. Он обновляет два из них, но, как я уже сказал, все 50 получают редернизацию < /p>
setSelectorInstruments(prevState => {
const newState: Record = {...prevState}
const newInstrument = newState[instrumentId];
if (newInstrument) {
newState[instrumentId] = {
...newInstrument,
view: instrumentInformation.view
}
}
const prevInstrument = newState[oldPrimaryInstrument.instrument.id];
if (prevInstrument) {
newState[oldPrimaryInstrument.instrument.id] = {
...prevInstrument,
view: oldPrimaryInstrument.view
}
}
return newState;
});
Подробнее здесь: [url]https://stackoverflow.com/questions/79587753/how-can-i-memoize-a-js-object-on-a-per-item-basis[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия