@timofeus91
Junior Frontend Developer

Почему scrollIntoView выполняется сразу на двух элементах?

Всем доброго дня! Есть такая ситуация. На странице есть два компонента со скроллами ( высота больше разрешенной либо из-за высоты экрана ), но разными z-index. Один частично перекрывает другой. У того что на первом плане есть код по скроллу к элементу . Ref указан у определенного элемента в длинном списке.

const myRef = useRef<HTMLLIElement | null>(null);

  const executeScroll = () => {
    if (myRef) {
      myRef?.current?.scrollIntoView({ behavior: "smooth" });
    }
  };

  useEffect(() => {
    executeScroll();
// сначала элементов нет. После их загрузки и получения в компоненте мы повторно вызываем useEffect
  }, [itemsForRender]);

// если выполнено определенное условие , то будет ref. Только один элемент подходит под условие всегда 
<li
              ref={something1 ===something2 ? myRef : undefined}

/>


Проблема в том что когда происходит скролл в этом компоненте, то происходит скролл и у компонента , который сзади , хотя у него этого нет в функционале. Кто-нибудь сталкивался с таким поведением scrollIntoView или кто-то может подсказать более лучший способ для выполнения скролла к элементу?
  • Вопрос задан
  • 125 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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