【问题标题】:how can I use Jquery in reactjs我如何在 reactjs 中使用 Jquery
【发布时间】:2018-09-29 17:26:50
【问题描述】:

我是 reactjs 世界的新手。我有一个导航栏,距离顶部 100 像素。 当我向下滚动页面时,导航栏应该粘在顶部。

我的导航栏类代码是

export default class NavBar extends React.Component {
  constructor(props) {
    super(props);

    this.toggle = this.toggle.bind(this);
    this.state = {
      isOpen: false
    };
  }
  toggle() {
    this.setState({
      isOpen: !this.state.isOpen
    });
  }
  render() {
    return (
      <div id="stickyheader">
        <Navbar color="light" white expand="md">
          <NavbarBrand href="/">
            <ResizeImage
              src={require('../image/logo.png')}
              alt="logo"
              options={{ width: 10 },{ height: 50 },{ mode: 'pad' }}

            />
          </NavbarBrand>
          <NavbarToggler onClick={this.toggle} />
            <Collapse isOpen={this.state.isOpen} navbar>
              <Nav className="ml-auto" navbar>
                <NavItem>
                  <NavLink href="/components/">HOME</NavLink>
                </NavItem>
                <NavItem>
                  <NavLink href="#">ALL CARS</NavLink>
                </NavItem>
                <NavItem>
                  <NavLink href="#">RATES</NavLink>
                </NavItem>
                <NavItem>
                  <NavLink href="#">ABOUT US</NavLink>
                </NavItem>
                <NavItem>
                  <NavLink href="#"><FontAwesomeIcon icon="users" />  BECOME A PARTNER</NavLink>
                </NavItem>

              </Nav>
            </Collapse>
        </Navbar>
      </div>

    );
  }
}

jquery 代码

$(function(){
        // Check the initial Poistion of the Sticky Header
        var stickyHeaderTop = $('#stickyheader').offset().top;

        $(window).scroll(function(){
                if( $(window).scrollTop() > stickyHeaderTop ) {
                        $('#stickyheader').css({position: 'fixed', top: '0px'});
                        $('#stickyalias').css('display', 'block');
                } else {
                        $('#stickyheader').css({position: 'static', top: '0px'});
                        $('#stickyalias').css('display', 'none');
                }
        });
  });

当我在 html 中使用时,此 jquery 代码运行良好。 我想问题是表明 id="stickyheader" 我提到了一些链接,但我没有找到合适的解决方案。请指导我解决这个问题。感谢您的进步。

【问题讨论】:

  • 实现的一种方法是使用ref,但您可以使用 jquery 库。比如npm i jquery 然后import $ from 'jquery'
  • @Revansiddh 我已经添加了使用 jquery 库。但请给出任何提示如何使用 ref insead 的 id
  • reactjs.org/docs/refs-and-the-dom.html。就像 div 中的 ref={this.myRef} 和构造函数中的 this.myRef = React.createRef(); 一样
  • 我认为你应该考虑不使用 jQuery。当您提供的代码可以通过本机 javascript 轻松完成时,jQuery 只会增加捆绑文件下载大小的额外数据开销。但是如果你不想从头开始,有很多开源包可以做到这一点。例如:npmjs.com/package/react-sticky

标签: jquery reactjs


【解决方案1】:

您可以在响应初始渲染后初始化 jQuery 函数 - 只需从 componentDidMount 调用它。

【讨论】:

猜你喜欢
  • 2021-02-15
  • 2021-07-31
  • 1970-01-01
  • 2016-09-05
  • 2021-01-10
  • 2016-02-11
  • 1970-01-01
  • 1970-01-01
  • 2020-09-10
相关资源
最近更新 更多