React.js 中的路由導航
我們有一個 index.js 檔案,如下所示:
import React from 'react' import ReactDOM from 'react-dom' import './index.css' import { Route, Link, BrowserRouter } from 'react-router-dom' import App from './App' import AboutUs from './ AboutUs’; import ContactUs from './ContactUs'; const routs = ( < BrowserRouter > <div> <ul> <li> <Link to="/">Home</Link> </li> <li> <Link to="/ aboutus ">Users</Link> </li> <li> <Link to="/ contactus ">Contact</Link> </li> </ul> <Route exact path="/" component={App} /> <Route path="/aboutus" component={AboutUs} /> <Route path="/contactus" component={ContactUs} /> </div> </ BrowserRouter > ); ReactDOM.render(routs, document.getElementById('root'))
現在,我們將在頁面上提供連結進行導航,而不是在瀏覽器中手動輸入 url。
react-router-dom 提供的 Link 元件有助於建立不會重新載入頁面本身的錨定標記。
如果我們使用 html 提供的預設錨定標記,它將在導航時重新載入頁面。但是由於我們只有一個 index.html 頁面,並且我們只是導航到其他 jsx 元件,因此我們不必讓頁面重新載入。
如何新增 404 頁面
當給定的 index.jsx 檔案中的路由中沒有路徑匹配時,將顯示 404 頁面。
讓我們為 404 錯誤建立一個頁面。
ErrorPage.jsx
import React from 'react' const ErrorPage = () => <h1>Page Not found</h1> export default ErrorPage
我們將使用 react-router-dom 提供的 switch 元件來確定路徑。
如果沒有找到匹配的路徑,我們將預設使用 Errorpage。
import React from 'react' import ReactDOM from 'react-dom' import './index.css' import { Route, Link, BrowserRouter, Switch } from 'react-router-dom' import App from './App' import AboutUs from './AboutUs' import ContactUs from './ContactUs' import ErrorPage from './ ErrorPage'; const routs = ( < BrowserRouter > <div> <ul> <li> <Link to="/">Home</Link> </li> <li> <Link to="/aboutus">About us</Link> </li> <li> <Link to="/contactus">Contact us</Link> </li> </ul> <Switch> <Route exact path="/" component={App} /> <Route path="/aboutus" component={AboutUs} /> <Route path="/contactus" component={ContactUs} /> <Route component={ErrorPage} /> </Switch> </div> </ BrowserRouter > ); ReactDOM.render(routs, document.getElementById('root'));
在 switch 元件中,我們沒有為 error 頁面提供任何路徑,因為它是 switch 語句中的最後一個元件。它是 switch 的預設語句。
網址引數
它幫助動態地為我們提供了網址引數,如
<Route path="conatctus/:id" component={ContactUs} />
在 index.jsx 檔案中
import React from 'react' import ReactDOM from 'react-dom' import './index.css' import { Route, Link, BrowserRouter, Switch } from 'react-router-dom' import App from './App' import AboutUs from './ AboutUs ' import ContactUs from './ ContactUs ' import ErrorPage from './ ErrorPage '; const routs = ( < BrowserRouter > <div> <ul> <li> <Link to="/">Home</Link> </li> <li> <Link to="/aboutus">About Us</Link> </li> <li> <Link to="/contactus">Contact Us</Link> </li> </ul> <Switch> <Route exact path="/" component={App} /> <Route path="/aboutus/:id" component={AboutUs} /> <Route path="/contactus" component={ContactUs} /> <Route component={ErrorPage} /> </Switch> </div> </ BrowserRouter > ); ReactDOM.render(routs, document.getElementById('root'));
現在我們在 aboutus 網址中有一個動態值,名為 id
如何訪問元件中的網址引數
import React from 'react'; class AboutUs extends React.Component { render() { const { params } = this.props.match return ( <div> <h1>About Us</h1> <p>{params.id}</p> </div> ) } } export default AboutUs
網址引數可用於 props 中。我們可以獲取它,方法如下 -
const { params } = this.props.match;
廣告