Какие библиотеки использовал для расстановки уникальных ключей

Ответ

Для генерации уникальных ключей в React чаще всего использую:

  1. uuid - популярная библиотека для генерации UUID (Universally Unique Identifier)
import { v4 as uuidv4 } from 'uuid';
const id = uuidv4(); // '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'
  1. nanoid - более легкая альтернатива UUID (128 байт против 36 байт)
import { nanoid } from 'nanoid';
const id = nanoid(); // 'V1StGXR8_Z5jdHi6B-myT'
  1. Для простых случаев можно использовать crypto.randomUUID() (встроенный API браузера)
const id = crypto.randomUUID();

Важно: ключи должны быть стабильными между рендерами, но уникальными среди соседей. Для списков лучше использовать ID из данных, а генераторы - только когда ID нет в данных.

Ответ 18+ 🔞

Слушай, а вот эти твои ключи в Реакте — это вообще отдельная песня, пиздец. Все эти key={index} — это просто билет в один конец в ад багов, когда список пересортируется. Ну ёпта, народ, думайте головами!

Так вот, есть несколько способов не выстрелить себе в ногу, точнее, в репутацию кода.

  1. uuid — классика, как водка под селёдку. Все его знают, все его юзают. Генерит строку, от которой у любого нормального человека глаза на лоб полезут. Уникальность — овердохуища, это факт.

    import { v4 as uuidv4 } from 'uuid';
    const id = uuidv4(); // '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'

    Солидный такой, блядь, идентификатор. Но и весит, сука, прилично — целых 36 байт. Для списка из тысячи элементов — уже не шутка.

  2. nanoid — это как uuid, но на диете. Умный чувак, который понял, что нехуй столько букв таскать. Генерит строки короче, криптографически стойкие, и в рот меня чих-пых, всего 21 байт в стандартной версии!

    import { nanoid } from 'nanoid';
    const id = nanoid(); // 'V1StGXR8_Z5jdHi6B-myT'

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

  3. crypto.randomUUID() — встроенный в браузер кореш. Зачем тащить либу, если браузер уже всё умеет? Современный API, тот же UUID v4. Быстро, надёжно, из коробки.

    const id = crypto.randomUUID(); // 'f4a8c3e0-1b3a-4e5c-9d2a-7b6c5f4e3d2a'

    Но, блядь, смотри — не в Node.js его сразу (в старых версиях), и поддержку в древних браузерах проверь, а то будет "а где мой ключ, сука?".

Главное правило, ёпта, которое все просрали:
Ключи должны быть как жена — стабильными между рендерами, но при этом уникальными среди соседей-соперников.
Если с бэка приходит массив с item.id — вот твой ключ, божественный и данный свыше, хули тут генерить-то?
Эти генераторы — это как костыль, когда своей ноги (нормального айди) нет. Только для таких случаев. Всё, тема закрыта, пошёл пить чай.