javascript - 在 Reactjs 中隐藏滚动元素?

标签 javascript reactjs

我有一个为该 div 启用滚动的 div。我有一些元素,当用户开始滚动时,我希望一个元素消失,当滚动停止时,我希望它再次出现。

我该怎么做

<div className="container"/> 
    <div>Hide me on scrolling</div>
    <div>Always show </div>
</div>

.container{
    flex: 1 1 80%;
    display: flex;
    flex-wrap: wrap;
    width: calc(100vw - 110px);
    height: calc(100vh - 75px);
    overflow-y: auto;
    min-width: 500px;
    display: flex;
    justify-content: center;
    z-index: 1;
}

最佳答案

浏览器中没有真正的滚动状态;滚动事件发生,然后就完成了。

您可以设置一个状态,例如isScrolling 在滚动事件发生时设置为 true,然后设置超时以在上次滚动后将其设置回 false

示例

class App extends React.Component {
  timeout = null;
  state = {
    isScrolling: false
  };
  
  componentDidMount() {
    window.addEventListener("scroll", this.onScroll);
  }
  
  componentWillUnmount() {
    window.removeEventListener("scroll", this.onScroll);
  }

  onScroll = () => {
    this.setState({ isScrolling: true });

    clearTimeout(this.timeout);

    this.timeout = setTimeout(() => {
      this.setState({ isScrolling: false });
    }, 200);
  };

  render() {
    return (
      <div style={{ height: 5000, overflowY: "scroll" }}>
        <div style={{ paddingTop: 50 }}>
          {this.state.isScrolling ? "Hidden" : "Shown"}
        </div>
      </div>
    );
  }
}

ReactDOM.render(<App />, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

<div id="root"></div>

关于javascript - 在 Reactjs 中隐藏滚动元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55268993/

相关文章:

c# - jqgrid动态格式化列

javascript - 使用 Angular 将文件复制到服务器

javascript - React 和 google-maps-react。不显示信息窗口

reactjs - 如何让 onClick 连续工作 - ReactJS

javascript - 根据选择输入更改输入值

javascript - 获取li内子标签的html内容

javascript - 我如何知道 XHR 请求出了什么问题?

javascript - React Flux - 在调度中调度 - 如何避免?

javascript - 子项作为文本不会显示在 React Native 的文本组件中

javascript - 如何在 React 中使用 javascript 模块对象(HTML + JS 嵌入)