【发布时间】:2021-04-17 22:58:55
【问题描述】:
将网站从 HTML 转换为 Gatsby 我有一个基本的 Bootstrap 4 导航:
<nav class="navbar navbar-expand-lg navbar-light fixed-top" id="mainNav">
<div class="container">
<a class="navbar-brand logo" href="/">
<!-- SVG Logo -->
</a>
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
Menu
<i class="fas fa-bars"></i>
</button>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a href="#" class="nav-link">Home</a>
</li>
</ul>
</div>
</div>
</nav>
在 gatsby-config.js 我已经定义了我的菜单,我可以查询并从 index.js 传递到我的 Navigation.js 组件。当我引用Navbar docs 时,每个内存都会将导航栏构建为列表。当我研究React Bootstrap 和其他示例的文档时,所有内容都构建为a href 在div 中,并且有多种编写方式,示例:
参考问答:React-Bootstrap link item in a navitem
代码:
<Nav.Link as={Link} eventKey={l.link}>
{l.name}
</Nav.Link>
渲染:
<a aria-current="page" class href=""><li data-rb-event-key="/" class="nav-link">home</li></a>
<a href="/mon"><li data-rb-event-key="mon" class="nav-link">Monday</li></a>
<a href="/tues"><li data-rb-event-key="tues" class="nav-link">Tuesday</li></a>
参考仓库:Gatsby React Bootstrap Start
代码:
<Link key={k} to={l.link}>
<Nav.Link as="li" eventKey={l.link}>
{l.name}
</Nav.Link>
</Link>
渲染:
<div class="justify-content-end navbar-nav">
<a aria-current="page" class="" href="/">
<li data-rb-event-key="/" class="nav-link">home</li>
</a>
<a href="/mon">
<li data-rb-event-key="mon" class="nav-link">Monday</li>
</a>
<a href="/tues">
<li data-rb-event-key="tues" class="nav-link">Tuesday</li>
</a>
</div>
完整组件供参考:
Navigation.js:
import React from 'react'
import { Link } from 'gatsby'
// Components
import Logo from './Logo'
// Bootstrap
import { Navbar, Container, Nav } from 'react-bootstrap'
// React Icons
import { GoThreeBars } from 'react-icons/go'
const Navigation = ({ menuLinks }) => {
return (
<Navbar id="headNav" collapseOnSelect expand="lg">
<Container>
<Navbar.Brand href="/">
<Logo id="logo" />
</Navbar.Brand>
<Navbar.Toggle
className="navbar-toggler navbar-toggler-right"
aria-controls="responsive-navbar-nav"
>
Menu <GoThreeBars />
</Navbar.Toggle>
<Navbar.Collapse id="responsive-navbar-nav" className="collapse navbar-collapse">
<Nav className="justify-content-end">
{menuLinks.map((l, k) => (
<Link key={k} to={l.link}>
<Nav.Link as="li" eventKey={l.link}>
{l.name}
</Nav.Link>
</Link>
))}
</Nav>
</Navbar.Collapse>
</Container>
</Navbar>
)
}
export default Navigation
在 React Bootstrap 中,编写链接以便复制 Bootstrap 4 文档和上面的示例的正确方法是什么?我需要同时使用 Gastby 的 Link 和 React Bootstrap 的 Nav.Link 吗?
【问题讨论】:
标签: bootstrap-4 gatsby react-bootstrap