使用React,我有一个静态声明的ref列表:
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>
然后将引用传递给动画函数,一切正常运作; 现在情况有些改变,我使用map创建了列表项,并且无法正确地引用该元素; 我尝试了类似以下的内容:
{menu.menu.map((D) => {
let newRef = createRef();
LiRefs.push(newRef);
return (
<li
key={D.id}
ref={(el) => (newRef = el)} >
{D.label}
</li>
);
})}
但我传递给动画函数的数组为空(我猜是因为该函数在useEffect钩子内被调用,而LiRefs还不是useRef)。我也知道我将创建多少个
但我传递给动画函数的数组为空(我猜是因为该函数在useEffect钩子内被调用,而LiRefs还不是useRef)。我也知道我将创建多少个<li>,所以我可以在开始时声明它们,并使用类似于以下的引用
ref={(el) => (`line${i}` = el)}
有没有其他的解决方法?这个似乎不起作用。
any other solution i could try? R:
有没有其他的解决方法?这个似乎不起作用。
React.useRef()
而不是React.createRef()
。createRef()
只用于React类组件中。 - jeredReact.createRef
可以在任何需要创建 react ref 的地方使用,我不知道有什么规定说它们只能在基于类的组件中使用。如果是这样的话,那么 React 文档 肯定会明确说明。 - Drew Reese