reactjs - React-Bootstrap 无法内联对齐导航链接
问题描述
我试图创建导航栏,但导航链接看起来像点并且不是内联的。当我尝试 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 来做到这一点
如何解决这个问题感谢任何帮助。
解决方案
额外div
的可能会导致格式问题。尝试用div
React Fragment替换。
仅供参考 - 我稍微修改了您的逻辑,以包含一个最小的、可重现的示例。其他小的变化包括:
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;
推荐阅读
- kubernetes - 防止K8S HPA在减少负载后删除pod
- c# - .Net HttpClient.timeout 是什么意思?
- javascript - 如何摆脱页面上不必要的 ng-container 边距?
- c++ - 我不明白我在使用 sse 的代码中哪里有问题
- reactjs - 有没有办法使用 useRef() 在 React 函数组件中缓存来自 redux 连接的数据?
- django - 部署应用程序 Django Rest 时运行 ASGI 环境的问题
- typescript - 我将如何为 TypeScript 接口强制执行许多可选属性中的至少一个?
- python - 如何找到文件中所有句子的单词错误率?
- javascript - 如何按域过滤电子邮件列表并在 JavaScript 中计数?
- conda - conda 如何确定每个文件的目的地?