React scrollIntoView() не работает с ref

#reactjs #react-hooks #react-ref #js-scrollintoview

#reactjs #реагирующие хуки #react-ref #js-scrollintoview

Вопрос:

У меня есть функциональный компонент react, определенный как

     export const NavMenuHorizontal: React.FunctionComponent<NavMenuProps> = (
      props
    ) => {         
        const selectedItemRef = React.createRef<HTMLDivElement>();
        React.useEffect(() => {
          selectedItemRef.current?.scrollIntoView({
            behavior: "smooth",
            inline: "center",
          })
        });

        return (
              <List>
              {map(...) => (
                  <div ref={isActive ? selectedItemRef : undefined}>
                     some text 
                  </div>
               )}
              </List>
        );
    };
//isActive is true for only one item in the map
  

Я пытаюсь заставить выбранный элемент списка прокручиваться в поле зрения, используя ссылку, но не могу получить ожидаемый результат. Однако, если я попытаюсь добавить точку останова отладки в хук, она работает должным образом и прокручивает элемент в окне просмотра.

Я также попытался обернуть свой scrollIntoView внутри setTimeout(), который работает, но прокручивает его более одного раза и приводит к резкому эффекту.

Комментарии:

1. вы отображаете список элементов с помощью функции map . и каждый из этих элементов хранится в одном и том же объекте ref?? тогда в этом ref сохраняется только последний из них. Является ли это желаемым поведением??

2. Ссылка сохраняется только для одного элемента, для которого значение «isActive» равно true. Я обновлю вопрос этим.

3. вы это исправили?