如何使用 useRef 抓取多个映射元素?

How can I grab multiple mapped elements using useRef?

在这里,我映射了一个对象数组,其中包含要在页面上显示的图像。在我尝试 useRef 的那一刻,它只抓住了最后一个元素。我怎样才能拥有它,以便我的 useRef 抓住我多个?

  <div className='images-container'>
             {skills.map((skill, idx) => {
                    return <div key={idx}>
                        <img alt={skill.name} ref={imageRef} src={skill.url} />
                        <p>{skill.name}</p>
                    </div>
                })}
            </div>

如果我理解正确,使用 ref 只会抓取其中一个元素,所以我想最好的方法是动态地使不同的 useRef 单独抓取?不好意思,刚学react。

最佳解决方案:不要使用您可能不需要的引用。如果您告诉我们您认为需要参考的原因,我们可以验证您是否正确。

其次,创建一个与你的技能列表长度相同的引用数组。一个 ref 只能指向一个对象。您正在做的是将相同的 refs 放置在许多对象上,这不是 refs 设计的工作方式。

const refs = [];
for (let i = 0; i < skills.length; i++) {
    refs.push(useRef());
}
return (
  <div className='images-container'>
             {skills.map((skill, idx) => {
                    return <div key={idx}>
                        <img alt={skill.name} ref={refs[idx]} src={skill.url} />
                        <p>{skill.name}</p>
                    </div>
                })}
            </div>
)