【问题标题】:React-Bootstrap unable to align navlinks inlineReact-Bootstrap 无法内联对齐导航链接
【发布时间】:2019-10-09 16:22:59
【问题描述】:

我试图创建导航栏,但导航链接看起来像点并且不是内联的。当我尝试 react-bootstrap 文档中给出的示例时,它是内联的。

这是我的标头组件的代码。当用户单击登录并登录时,标题组件将用户对象作为道具,我想添加名称和注销链接。

import React from 'react';
import { Navbar, Nav } from 'react-bootstrap';
// NavDropdown, Form, FormControl, Button

var header = props => {
  let { user, loginClick, logoutClick } = props;
  let { name } = user;
  var navLinks =
    typeof name == 'undefined' || name === '' ? (
      <Nav.Link onClick={loginClick}>Login</Nav.Link>
    ) : (
      <div>
        <Navbar.Text> {name} </Navbar.Text>
        <Nav.Link onClick={logoutClick}>Log out</Nav.Link>
      </div>
    );

  // Here Items are not comming Inline
  return (
    <Navbar bg='light' expand='sm'>
      <Navbar.Brand href='#home'>Friends And Pets</Navbar.Brand>
      <Navbar.Toggle aria-controls='basic-navbar-nav' />
      <Navbar.Collapse id='basic-navbar-nav'>
        <Nav className='ml-auto'>{navLinks}</Nav>
      </Navbar.Collapse>
    </Navbar>
  );

  // Comes inLine

  // return (
  //     <Navbar bg="light" expand="lg">
  //         <Navbar.Brand href="#home">React-Bootstrap</Navbar.Brand>
  //         <Navbar.Toggle aria-controls="basic-navbar-nav" />
  //         <Navbar.Collapse id="basic-navbar-nav">
  //             <Nav className="ml-auto">
  //                 <Nav.Link href="#home">Home</Nav.Link>
  //                 <Nav.Link href="#link">Link</Nav.Link>
  //                 <NavDropdown title="Dropdown" id="basic-nav-dropdown">
  //                     <NavDropdown.Item href="#action/3.1">Action</NavDropdown.Item>
  //                     <NavDropdown.Item href="#action/3.2">Another action</NavDropdown.Item>
  //                     <NavDropdown.Item href="#action/3.3">Something</NavDropdown.Item>
  //                     <NavDropdown.Divider />
  //                     <NavDropdown.Item href="#action/3.4">Separated link</NavDropdown.Item>
  //                 </NavDropdown>
  //             </Nav>
  //             <Form inline>
  //                 <FormControl type="text" placeholder="Search" className="mr-sm-2" />
  //                 <Button variant="outline-success">Search</Button>
  //             </Form>
  //         </Navbar.Collapse>
  //     </Navbar>
  // )
};
export default header;

注意:我可以使用额外的 CSS 使其内联,但我正在尝试使用 react-bootstrap 来做到这一点

如何解决此问题,感谢任何帮助。

【问题讨论】:

    标签: reactjs react-bootstrap


    【解决方案1】:

    额外的div 可能会导致格式问题。尝试将div 替换为React Fragment

    仅供参考-我稍微修改了您的逻辑以包含minimal, reproducible example。其他小改动包括:

        import React, { Fragment } from 'react';
        import Nav from 'react-bootstrap/Nav';
        import Navbar from 'react-bootstrap/Navbar';
    
        const header = props => {
          const isLoggedIn = true;
    
          // Here Items are not coming Inline
          return (
            <Navbar bg='light' expand='sm'>
              <Navbar.Brand href='#home'>Friends And Pets</Navbar.Brand>
              <Navbar.Toggle aria-controls='basic-navbar-nav' />
              <Navbar.Collapse id='basic-navbar-nav'>
                <Nav className='ml-auto'>
                  {isLoggedIn ? (
                    <Fragment>
                      <Navbar.Text> Fake Name</Navbar.Text>
                      <Nav.Link>Log out</Nav.Link>
                    </Fragment>
                  ) : (
                    <Nav.Link>Login</Nav.Link>
                  )}
                </Nav>
              </Navbar.Collapse>
            </Navbar>
          );
        };
        export default header;
    

    【讨论】:

      猜你喜欢
      • 2013-11-22
      • 2021-09-13
      • 1970-01-01
      • 1970-01-01
      • 2014-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-12
      相关资源
      最近更新 更多