Как в массив useRef-ов запихнуть children?

Не особо важно, но чисто для контекста: Пытаюсь реализовать "скроллер" - есть родительский элемент, в который пихается неограниченное кол-во тегов, а он при прокрутке колесика мыши крутит до следующего элемента.
Для этого нужно как то детектить все эти элементы, я пытался реализовать следующую схему:
interface IScrollerProps {
    children: JSX.Element[]
}

let items = useRef([])

{props.children.map((child, index) => 
      <div key={index} ref={items[index]}>
             {child}
      </div>
)}

На что тайпскрипт ругается:
TS7053: Element implicitly has an 'any' type because expression of type 'number' can't be used to index type 'MutableRefObject&lt;never[]&gt;'.<br/>No index signature with a parameter of type 'number' was found on type 'MutableRefObject&lt;never[]&gt;'.

Не могу понять, в чем проблема
  • Вопрос задан
  • 318 просмотров
Решения вопроса 1
Alexandroppolus
@Alexandroppolus
кодир
const refContainer = useRef<HTMLDivElement>(null);

.........

<div ref={refContainer}>
  {props.children.map((child, index) => 
      <div key={index}>
             {child}
      </div>
  )}
</div>


далее в refContainer.current.children у тебя актуальный набор элементов.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
petermzg
@petermzg
Самый лучший программист
let containerRef = useRef(null);
containerRef.current.children[N];
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы