我试图创建导航栏,但导航链接看起来像点,但不是内联的。当我尝试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
如何解决此问题,感谢您的帮助。
答案 0 :(得分:1)
多余的div
可能会导致格式问题。尝试将div
替换为React Fragment。
仅供参考-我稍加修改了您的逻辑,使其包含minimal, reproducible example。其他较小的更改包括:
const
代替var
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;