Используя React, у меня есть список ссылок, статически объявленных следующим образом:
let line1 = useRef(null);
let line2 = useRef(null);
let line3 = useRef(null);
...
//IN MY RENDER PART
<li ref={(el) => (line1 = el)}>line1</li>
<li ref={(el) => (line2 = el)}>line1</li>
<li ref={(el) => (line3 = el)}>line1</li>
затем ссылки передаются в функцию анимации, и все работает правильно; теперь все немного изменилось, и я создаю элемент списка с помощью карты, и я больше не могу правильно ссылаться на элемент; я пробовал что-то вроде:
{menu.menu.map((D) => {
let newRef = createRef();
LiRefs.push(newRef);
return (
<li
key={D.id}
ref={(el) => (newRef = el)} >
{D.label}
</li>
);
})}
but the array i pass to the animation function is empty (i guess because the function is called inside useEffect hook and LiRefs is not yet a useRef) i also know the number of
ref={(el) => (`line${i}` = el)}
который не работает, какое-либо другое решение, которое я мог бы попробовать?
React.useRef()
, а неReact.createRef()
.createRef()
предназначен только для использования в компонентах класса React. - person jered   schedule 18.12.2020React.createRef
можно использовать везде, где вы хотите / вам нужно создать ссылку на реакцию, я не знаю правила, которое гласило бы, что они могут использоваться только в компонентах на основе классов. Если бы это было так, то наверняка в документации React это было бы ясно. . - person Drew Reese   schedule 18.12.2020