bootstrap nav link 在 reactjs 中不起作用
bootstrap nav link is not working in reactjs
我是新来的,也是 ReactJS 的新手。
这里我使用 Reactjs 中的 bootstrap 导航栏组件创建了一个导航栏。
<Navbar collapseOnSelect expand="lg">
<Container>
<Navbar.Brand to={"/"}>Rental</Navbar.Brand>
<Navbar.Toggle aria-controls="responsive-navbar-nav" />
<Navbar.Collapse id="responsive-navbar-nav">
<Nav>
<Nav.Link to="/" >
<FontAwesomeIcon
icon={faHome}
/> Home
</Nav.Link>
<Nav.Link to="/login" >
<FontAwesomeIcon
icon={faUser}
/> Login/ Registration
</Nav.Link>
</Nav>
</Navbar.Collapse>
</Container>
</Navbar>
当我进入浏览器并检查它时显示如下:
<a to="/" role="button" class="nav-link" tabindex="0">Home</a>
并且 link 将无法正常工作。
如何解决?
看起来你正在渲染 react-bootstrap 的 Nav.Link 而不是 react-router 的 Link 组件,所以路由器没有接收你的路由更改。
因此从 React 路由器导入 Link 并使用它应该可以解决问题。
import { Link } from 'react-router-dom';
<Nav.Link as={Link} to="/" >
<FontAwesomeIcon
icon={faHome}
/> Home
</Nav.Link>
将您的代码包装在路由器中,确保您在应用程序或 ReactDOM.render:
中执行此操作
import { BrowserRouter } from 'react-router-dom';
ReactDOM.render(
<BrowserRouter>
<App />
</BrowserRouter>,
rootElement
);
您渲染的是 react-bootstrap 的 Nav.Link 而不是 react-router 的 Link 组件,因此路由器没有获取您的路由更改。
react-bootstrap 在它的大部分组件中提供了一个 render prop 来指定我们想要渲染哪个组件或元素,如果我们不想要默认值的话。
尝试做出这些改变!
import { Switch, Route, Link } from 'react-router-dom';
<Navbar.Brand as={Link} to="/" >Rental</Navbar.Brand>
<Nav.Link as={Link} to="/" >
<FontAwesomeIcon icon={faHome}/>
Home
</Nav.Link>
<Nav.Link as={Link} to="/login" >
<FontAwesomeIcon icon={faUser}/>
Login/ Registration
</Nav.Link>
我是新来的,也是 ReactJS 的新手。
这里我使用 Reactjs 中的 bootstrap 导航栏组件创建了一个导航栏。
<Navbar collapseOnSelect expand="lg">
<Container>
<Navbar.Brand to={"/"}>Rental</Navbar.Brand>
<Navbar.Toggle aria-controls="responsive-navbar-nav" />
<Navbar.Collapse id="responsive-navbar-nav">
<Nav>
<Nav.Link to="/" >
<FontAwesomeIcon
icon={faHome}
/> Home
</Nav.Link>
<Nav.Link to="/login" >
<FontAwesomeIcon
icon={faUser}
/> Login/ Registration
</Nav.Link>
</Nav>
</Navbar.Collapse>
</Container>
</Navbar>
当我进入浏览器并检查它时显示如下:
<a to="/" role="button" class="nav-link" tabindex="0">Home</a>
并且 link 将无法正常工作。
如何解决?
看起来你正在渲染 react-bootstrap 的 Nav.Link 而不是 react-router 的 Link 组件,所以路由器没有接收你的路由更改。
因此从 React 路由器导入 Link 并使用它应该可以解决问题。
import { Link } from 'react-router-dom';
<Nav.Link as={Link} to="/" >
<FontAwesomeIcon
icon={faHome}
/> Home
</Nav.Link>
将您的代码包装在路由器中,确保您在应用程序或 ReactDOM.render:
中执行此操作import { BrowserRouter } from 'react-router-dom';
ReactDOM.render(
<BrowserRouter>
<App />
</BrowserRouter>,
rootElement
);
您渲染的是 react-bootstrap 的 Nav.Link 而不是 react-router 的 Link 组件,因此路由器没有获取您的路由更改。
react-bootstrap 在它的大部分组件中提供了一个 render prop 来指定我们想要渲染哪个组件或元素,如果我们不想要默认值的话。
尝试做出这些改变!
import { Switch, Route, Link } from 'react-router-dom';
<Navbar.Brand as={Link} to="/" >Rental</Navbar.Brand>
<Nav.Link as={Link} to="/" >
<FontAwesomeIcon icon={faHome}/>
Home
</Nav.Link>
<Nav.Link as={Link} to="/login" >
<FontAwesomeIcon icon={faUser}/>
Login/ Registration
</Nav.Link>