相关疑难解决方法(0)

在React.js中更新onScroll组件的样式

我在React中构建了一个组件,它应该在窗口滚动上更新自己的样式以创建视差效果.

组件render方法如下所示:

  function() {
    let style = { transform: 'translateY(0px)' };

    window.addEventListener('scroll', (event) => {
      let scrollTop = event.srcElement.body.scrollTop,
          itemTranslate = Math.min(0, scrollTop/3 - 60);

      style.transform = 'translateY(' + itemTranslate + 'px)');
    });

    return (
      <div style={style}></div>
    );
  }
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为React不知道组件已更改,因此组件不会被重新呈现.

我已经尝试将值存储在itemTranslate组件的状态中,并调用setState滚动回调.但是,这使得滚动无法使用,因为这非常慢.

有关如何做到这一点的任何建议?

谢谢.

javascript reactjs

111
推荐指数
11
解决办法
15万
查看次数

React - 向下滚动时向上滑动固定导航栏,向上滚动时向下滑动

tl; dr 向下滚动以获取对我有用的解决方案!

如何在反应中在固定导航栏上实现上下滑动?

使用 refs 或使用 componentDidMount 生命周期钩子的更好方法是什么?

  hideNav = (navbar) => {
    const hide = () => {
      let lastScrollTop = 0;
      const currentScrollTop = navbar.scrollTop;

      // scroll down
      if (currentScrollTop > lastScrollTop) {
      navbar.classList.add('hidden');
      } else {
      // scroll up
        navbar.classList.remove('hidden');
      }
      lastScrollTop = currentScrollTop;
    };

    window.addEventListener('scroll', hide);
  };
Run Code Online (Sandbox Code Playgroud)

...在渲染方法中进一步:

 render() {
      return <Navbar ref={this.hideNav} />
Run Code Online (Sandbox Code Playgroud)

更新:

解决方案:

class Navbar extends React.Component {
  state = {
    auth: false,
    slide: 0,  // How much should the Navbar slide …
Run Code Online (Sandbox Code Playgroud)

html javascript css jsx reactjs

11
推荐指数
1
解决办法
1万
查看次数

标签 统计

javascript ×2

reactjs ×2

css ×1

html ×1

jsx ×1