开发者问题收集

useref 无法在 React Comp 中设置属性“display”

2020-09-29
756

嘿,我正在尝试制作一个基本的 React 滚动到顶部按钮,我从 w3 获得了此代码,我认为它很好,我尝试更改一些东西,但没有成功,我相信解决方案很愚蠢,希望得到帮助,谢谢。我收到此错误:

Cannot set property 'display' of undefined

这是我的代码:

import React, { useRef } from "react";

const ScrollToTop = () => {
  const myButton = useRef(null);

  // When the user scrolls down 20px from the top of the document, show the button
  window.onscroll = function () {
    scrollFunction();
  };

  function scrollFunction() {
    if (
      document.body.scrollTop > 20 ||
      document.documentElement.scrollTop > 20
    ) {
      myButton.style.display = "block";
    } else {
      myButton.style.display = "none";
    }
  }

  // When the user clicks on the button, scroll to the top of the document
  function topFunction() {
    document.body.scrollTop = 0; // For Safari
    document.documentElement.scrollTop = 0; // For Chrome, Firefox, IE and Opera
  }
  return (
    <div>
      <button onclick="topFunction()" ref={myButton} title="Go to top">
        Top
      </button>
    </div>
  );
};

export default ScrollToTop;
2个回答

应为 myButton.current.style.display。

lissettdm
2020-09-29

每当您使用 useRef 时,都需要在变量名称后添加 current 属性 它将与 myButton.current.style.display 一起使用。 将按钮样式设置为固定底部即可使用

vineeta kande
2020-09-29