Создать ref для элементов в цикле
У меня есть массив реакт элементов, который я вывожу с помощи функции map
:
{ elemsList.map((item, i) => {
return (
<div
key={i}
ref={refsArr[i]}
data-grid={item.props["data-grid"]}
onClick={e => doubleClickHandler(item.key, e)}
style={{
backgroundColor: i === selectedComponent ? '#828EE3' : "#102f6a",
color: "#fff",
height: "100%",
}}
>
{item}
</div>
)}
) }
Мне нужно создать ref
для каждого из элементов этого массива. Я попробовал сделать это использовав useRef
, передавая туда массив:
const refsArr = useRef([])
refsArr.current = elemsList.map((item, i) => refsArr.current[i] ?? setTimeout(createRef(), 5000))
...
{ elemsList.map((item, i) => {
return (
<div
key={i}
ref={refsArr[i]}
data-grid={item.props["data-grid"]}
onClick={e => doubleClickHandler(item.key, e)}
style={{
backgroundColor: i === selectedComponent ? '#828EE3' : "#102f6a",
color: "#fff",
height: "100%",
}}
>
{item}
</div>
)}
) }
Проблема в том, что при попытке вывода моего ref-массива
в консоль, вместо нормального ref
, я получаю объект следующего содержания:
{ current: [53] }
Как можно исправить эту проблему?
Источник: Stack Overflow на русском