{items.map((item, index) => (
<li key={index}>
<input value={item.name} />
</li>
))}
<li key=0>
остался тем же.В итоге сбивается фокус и теряется ввод.
{items.map((item) => (
<li key={item.id}>
<input value={item.name} />
</li>
))}
id
сохраняет правильное соответствие элементов, и UI ведёт себя предсказуемо.index
только если список точно статичен (например, меню без состояния). В остальных случаях всегда нужен стабильный уникальный ключ (id).#hotfix #react
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍1👏1
На картинке 3 кейса:
— Всегда указывайте все зависимости эффекта
— Если зависимость нестабильна (объект/функция) → мемоизируйте
(useMemo, useCallback)
— Примитивы (строка, число) в deps — самый безопасный вариант
#hotfix #react
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍2🔥2
На картинке 3 ситуации:
— Никогда не спредьте всё подряд в корень
— Лишние атрибуты → лишние баги
— Чётко указывайте только то, что действительно нужно в DOM
#hotfix #react
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5👾2
Многие используют эти псевдоклассы для управления состояниями форм и элементов, но есть ловушки:
1.
:focus-within
реагирует только на фокус внутри самого элемента, не на внешние события.2.
:not()
может «съесть» вложенные селекторы неправильно — порядок и специфичность важны.3. Если элемент содержит другие интерактивные элементы (кнопки, ссылки), браузер может вести себя по-разному.
— Использовать более точные селекторы и отдельные правила для состояния фокуса.
— Проверять вложенные элементы:
:focus-within
смотрит любые потомки, не только input.— Не смешивать
:not()
с сложными вложенными селекторами — часто проще добавить класс через JS.#hotfix #css
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1