Alexander3928
@Alexander3928

Почему strokeoffset не работает?

Почему не добавляются стили strokeDashoffset? circleRef.current.style.strokeDashoffset = dashoffset

637920894f84c784186721.png

export function ScrollToTop() {
  const circleRef = React.useRef(); 
  
  React.useEffect(() => {
    const circleLength = circleRef.current.getTotalLength();

    window.addEventListener("scroll", () => {
      const getSctollTop = () => {
        return window.pageYOffset || document.documentElement.scrollTo;
      }

      const updateDashoffset = () => {
        const heigth = document.documentElement.scrollHeight - window.innerHeight;
        const dashoffset = circleRef.current - (getSctollTop() * circleLength / heigth);

        circleRef.current.style.strokeDashoffset = dashoffset
      };
      updateDashoffset()
    });

  }, []);


  return (
      <svg onClick={isStart} width="50" height="50" viewBox="0 0 50 50" className={styles.circle_svg}>
        <circle ref={circleRef} cx="25" cy="25" r="23.5" fill="none"/>
      </svg>
  )
}
  • Вопрос задан
  • 79 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега React
const dashoffset = circleRef.current - ...

Вычитаете из элемента? Умно. Конечно, в том случае, если вашей целью является получение NaN.

const getSctollTop = () => {
  return window.pageYOffset || document.documentElement.scrollTo;
}

А точно scrollTo? Это же метод, а вы вроде бы число хотите получить. Может, scrollTop?

React.useEffect(() => {
  ...
  window.addEventListener("scroll", () => {
    ...
  });

}, []);

Почему нет очистки эффекта?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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