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

Привет! Как вы решаете проблему генерации уникального ключа для компонентов?

47 ответов

14 просмотров

Либо уникальный Id в объекте, либо либа например uuid

А в чем проблема?

В крайнем случае index из map например, но не рекомендуется

Марат
В крайнем случае index из map например, но не реко...

к index можно миксовать какой-то стринговый параметр объекта, будет уникально

Danik-Newgarden Автор вопроса
Марат
Либо уникальный Id в объекте, либо либа например u...

Если я генерирую ключ через uid в двух разных компонентах, то ключи повторяются

Ivan 🧑‍🚀
Нет)

да, потому что реакт и сам индексы проставляет (велком в исходники) Ну только если заткнуть его ор

Danila Nikonets
?

Не гуд)

Danila Nikonets
поясни

При добавлении строки к индексу получается настолько же уникальное значение, насколько уникален индекс

Ivan 🧑‍🚀
Покеж

сча попробую найти

Ivan 🧑‍🚀
Покеж

вот https://ru.reactjs.org/docs/lists-and-keys.html

Ivan 🧑‍🚀
При добавлении строки к индексу получается настоль...

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

Danila Nikonets
Да, но при изменении коллеции если не миксовать чт...

Есть у тебя список, в нем ключи item-0, item-1 и item-2. Ключи генерятся из строки item- и индекса. Если удалить элемент посередине, то ключи будут вычислены в item-0 и item-1. Добавление строки ни на что не влияет

Ivan 🧑‍🚀
Есть у тебя список, в нем ключи item-0, item-1 и i...

С чего бы это? Допустим удалили второй элемент коллекции 0 1 2 -> 0 1 (пропал третий) /////// 0-привет 1-hi 2-bye -> 0-привет 1-bye (а тут второй)

Danila Nikonets
С чего бы это? Допустим удалили второй элемент кол...

Зачем тогда индекс, если у тебя есть УНИКАЛЬНОЕ значение?

Ivan 🧑‍🚀
Зачем тогда индекс, если у тебя есть УНИКАЛЬНОЕ зн...

иногда бывает так, что добавляемая к индексу строка не совсем уникальная (например, в чате может быть два и более сообщения "привет")

Danila Nikonets
С чего бы это? Допустим удалили второй элемент кол...

Приведёт к лишним ререндерам — компонент с -bye не изменился, а ключ у него изменился

Danila Nikonets
иногда бывает так, что добавляемая к индексу строк...

ну вот уже должно же казаться костылем не очень правильным да? или нет?

Danila Nikonets
иногда бывает так, что добавляемая к индексу строк...

Ключи должны быть уникальными и ПОСТОЯННЫМИ для конкретного компонента

Так а в чем проблема?

Danila Nikonets
да, но иногда можно ж закостылить чуть-чуть)

Если можно сделать нормально, то зачем?

Danik-Newgarden Автор вопроса
Ivan 🧑‍🚀
Так а в чем проблема?

Так вот как они повторяются: у меня есть массивы типа [1, 2] и map((item) => (<element key={uid(item)}/>) Есть элементы 1 2 Когда элемент добавляется в масив пушится arr.length + 1 Соответственно элементы будут иметь ключ 'val-1' 'val-2' Если удалить элемент 1, и создать новый то у меня будет два элемента с ключом 'val-2'

Ivan 🧑‍🚀
Покеж

Так стоп диза. https://github.com/facebook/react/blob/master/packages/react/src/ReactElement.js#L388 Или я упоролся или мне приснилось но чет я не нахожу

Danila Nikonets
Да, но при изменении коллеции если не миксовать чт...

просто никогда не использовать индексы как ключи или составляющую индекса, НИКОГДА и все будет хорошо

Danik Newgarden
Так вот как они повторяются: у меня есть массивы т...

https://t.me/react_js/1077335 Уникальные идентификаторы надо раздать ДО рендера. Там, где объявляются/запрашиваются/хранятся данные. При добавлении нового элемента, не надо завязываться на длину массива — создай УНИКАЛЬНОЕ значение. Math.random или nanoid. Не в рендере, не внутри map

Dmitriy Shuleshov
о точно де нашел?

https://github.com/facebook/react/blob/master/packages/react/src/ReactChildren.js#L58-L71 тут

Nikolay Tolochnyy
https://github.com/facebook/react/blob/master/pack...

А неее подождь это же мап для чилдренов, наврное я и в прошлый раз принял его за авто key из индекса

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта