今天我们要聊一聊 React Router,这是一个让你的 React 应用导航变得轻松愉快的神奇工具。无论是构建简单的网站还是复杂的单页面应用,React Router 都能助你一臂之力。废话不多说,让我们开始探险吧!
第一步:安装React Router
首先,我们需要使用 npm 或者 yarn 安装 React Router。在终端运行以下命令:
npm install react-router-dom //或者 yarn add react-router-dom
第二步:基本用法
// App.js import React from 'react'; import { BrowserRouter as Router, Route } from 'react-router-dom'; import Home from './Home'; import About from './About'; function App() { return ( <Router> <Route path="/" exact component={Home} /> <Route path="/about" component={About} /> </Router> ); } export default App;
React Router 主要提供了两个核心组件:
// App.js import React from 'react'; import { BrowserRouter as Router, Route } from 'react-router-dom'; import Home from './Home'; import About from './About'; function App() { return ( <Router> <Route path="/" exact component={Home} /> <Route path="/about" component={About} /> </Router> ); } export default App;
在这个例子中,我们使用
第三步:路由参数
React Router 也支持路由参数,让我们的路由变得更加灵活。比如:
// App.js import React from 'react'; import { BrowserRouter as Router, Route } from 'react-router-dom'; import Home from './Home'; import UserProfile from './UserProfile'; function App() { return ( <Router> <Route path="/" exact component={Home} /> <Route path="/user/:username" component={UserProfile} /> </Router> ); } export default App;
在
第四步:使用Link实现导航
为了实现页面导航,React Router 提供了
// Home.js import React from 'react'; import { Link } from 'react-router-dom'; function Home() { return ( <div> <h1>Home</h1> <Link to="/about">Go to About</Link> </div> ); } export default Home;
第五步:嵌套路由
如果你的应用有复杂的页面结构,React Router 也能轻松胜任。看看嵌套路由的例子:
// App.js import React from 'react'; import { BrowserRouter as Router, Route } from 'react-router-dom'; import Home from './Home'; import UserProfile from './UserProfile'; function App() { return ( <Router> <Route path="/" exact component={Home} /> <Route path="/user/:username" component={UserProfile} /> </Router> ); } export default App;
React Router 的嵌套路由让页面组织变得更加清晰。
第六步:withRouter
有时候我们需要将路由信息传递给非路由组件,这时候就需要使用
// UserProfile.js import React from 'react'; import { withRouter } from 'react-router-dom'; function UserProfile(props) { const username = props.match.params.username; return ( <div> <h1>User Profile</h1> <p>Username: {username}</p> </div> ); } export default withRouter(UserProfile);