Какова цель использования useRef(uuid())?
Недавно я обнаружил довольно странный и новый для меня способ использования useRef.useRef(uuid()) - это допустимый способ создания стабильного идентификатора или чего-то, чего следует избегать?
1 ответ
Он сгенерирует стабильный идентификатор, но в его текущей форме он вызоветuuid()
каждый цикл рендеринга. Здесь это, вероятно, не имеет большого значения, но представьте, если бы это была тяжелая функция. Вызов этого каждый цикл рендеринга может повлиять на производительность. Вместо этого вы можете рассмотреть возможность использованияuseEffect
хук, чтобы присвоить значение ref.
Пример:
const idRef = useRef();
useEffect(() => {
idRef.current = uuid();
}, []);
Вы также можете создать функцию-получатель, которая возвращает текущее значение ссылки и создает его только при необходимости.
Пример:
const idRef = useRef();
const getId = () => {
if (!idRef.current) {
idRef.current = uuid();
}
return idRef.current;
};