javascript - 更改工具栏背景颜色并在 body 滚动时使用react

标签 javascript css reactjs

我正在尝试在主体滚动时将工具栏背景颜色更改为 #fff 颜色。否则它将是透明

这是示例工具栏组件:

export default class ToolBar extends React.Component {
  constructor(props){
    super(props)
    this.state = {
      scrolled:false
    }
  }
  render() {
    const { children, className,scrolled, ...other } = this.props
    return (
      <nav style={{backgroundColor:this.state.scrolled?'#fff':'transparent'}}>
        {children}
      </nav>
    )
  }
}

我们如何用 React 做到这一点?

最佳答案

只需向窗口对象添加一个事件监听器。

componentDidMount() {
   window.addEventListener('scroll', this.checkScroll);
}

checkScroll = () => {
   this.setState({ scrolled: window.scrollY > 0 });
};

注意:您可能还需要一些去抖动以避免快速和多重设置状态。

并记得在组件销毁时断开监听器。

componentWillUnmount() {
   window.removeEventListener('scroll', this.checkScroll);
}

关于javascript - 更改工具栏背景颜色并在 body 滚动时使用react,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59148413/

相关文章:

javascript - 无需下载即可知道图片是否支持 CORS

javascript - Firefox 插件内的网站

javascript - Dialogflow 实现访问代码中的实体

HTML CSS 表格行重叠

javascript - 在作为 prop 传递的 vue 组件中使用模板

html - 模态内的 href 链接不起作用

css - 如何使用 CKEdit 按钮的字体图标而不是图像

javascript - redux 商店外的 Redux 状态

reactjs - 使用 native-base 即时更改主题

javascript - 无法在 React Component 中编写包含某些代码的脚本标签