【问题标题】:Bootstrap: Toggler not displaying its contentBootstrap:切换器不显示其内容
【发布时间】:2019-04-01 16:15:29
【问题描述】:

我正在使用 React 构建一个基本网站,同时使用 Reactstrap(bootstrap 4 文档)。 当视口的宽度很小时,我有一个基本的导航栏,其中包含一些项目和一个切换按钮。 问题是当单击切换器时它不显示任何内容。为什么? 但是,当屏幕以较大宽度返回时,服务选项卡的下拉菜单会显示为打开状态,因此似乎切换器以某种方式仅链接到它而不是整个导航栏。想法?

导航栏:

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

    this.scrolNav = this.scrolNav.bind(this);
    this.toggle = this.toggle.bind(this);
    this.state = {
      class_up: 'whentop',
      class_down: 'nav_top',
      dropdownOpen: false
    };
  }

// prova scroll adaptive navbar

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


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


scrolNav() {
    const scrolly = window.scrollY;
    if (scrolly > 80) {
        this.setState({
          class_up: 'whenscroll',
          class_down: 'nav_down'
        })
    }   
    else if (scrolly < 80) {
        this.setState({
          class_up: 'whentop',
          class_down: 'nav_top'
        });

    }
}


  toggle() {
    this.setState({
      dropdownOpen: !this.state.dropdownOpen
    });
  }


  render() {
    return (
      <div  className={this.state.class_up}>
        <Navbar className={this.state.class_down} color="light" light expand="md">
        <a href="/"><img className="logonowrite" src={logoNoWrite} width="80px" alt=""/>
          <NavbarBrand id="write_logo"><img src={write} className="write_logo" alt=""/></NavbarBrand></a>
          <NavbarToggler onClick={this.toggle} />   
          <Collapse isOpen={this.state.isOpen} navbar>
            <Nav className="ml-auto" navbar>
            <Dropdown nav isOpen={this.state.dropdownOpen} toggle={this.toggle}>
            <DropdownToggle nav caret>
              Services
            </DropdownToggle>
            <DropdownMenu>
              <DropdownItem><Link to="/rec_services">Recruitment Solutions</Link></DropdownItem>
              <DropdownItem><Link to="/web_services">Web Design</Link></DropdownItem>
              <DropdownItem><Link to="/mark_services">SEO & Digital Marketing</Link></DropdownItem>
            </DropdownMenu>
          </Dropdown>                
              <NavItem>
              <Link className="int_link" to="/">Home</Link>
              </NavItem>
              <NavItem>
                <Link className="int_link_about" to="about">About</Link>
              </NavItem>
               <NavItem>
                <Link className="int_link_about" to="/contacts">Contacts</Link>    
               </NavItem> 
            </Nav>
          </Collapse>
        </Navbar>
      </div>
    );
  }
}

【问题讨论】:

    标签: html css reactjs bootstrap-4


    【解决方案1】:

    折叠组件&lt;Collapse isOpen={this.state.isOpen} navbar&gt; 正在搜索状态isOpen。当您单击 toggler 时,您设置的状态为 dropdownOpen 而不是 Collpase 正在搜索的 isOpen

    所以你需要改成&lt;Collapse isOpen={this.state.dropdownOpen} navbar&gt;

    P.S 未测试

    【讨论】:

    • 是的,它确实有效:)。我还必须拆分 toggle() 方法,一个用于服务下拉菜单,一个用于通用切换按钮本身,以避免同时关闭/打开它们。你知道如何构建更好的导航栏的其他方法/框架吗?使用 Bootstrap,它看起来非常过时、乏味且难以自定义......
    • 对于导航栏,特别是我没有具体的东西,但我最近使用了 ant.design,它非常可爱。看看吧
    猜你喜欢
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多