react-router
第一步,配置路由
import React from 'react' import { BrowserRouter as Router, Route, Redirect, Switch } from 'react-router-dom' import Home from '../views/home' import Films from '../views/films' import Center from '../views/center' import NotFound from '../views/notfound' import Films1 from '../views/detail/1' import Login from '../views/login' function isAuth() { return localStorage.getItem('token') } // 函数式组件没有this export default function indexRouter(props) { const fun1 = () => { console.log(props); } return ( <div> {/* {fun1()} */} {/* hash HashRouter 路径有#号 BrowserRouter 没有#号*/} <Router> {props.children} {/* switch 匹配不到时 执行redirect */} <Switch> <Route path="/home" component={Home}></Route> <Route path="/films" component={Films}></Route> <Route path="/center" render={() => { return isAuth() ? <Center /> : <Redirect to="login" ></Redirect> }}></Route> <Route path="/login" component={Login}></Route> {/* 动态路由 */} <Route path='/detail/:myid' component={Films1}></Route> {/* query传参 */} {/* <Route path='/detail' component={Films1}></Route> */} {/* 模糊匹配 以上都不匹配执行下面路由 路由重定向*/} {/* 精确匹配 exact */} <Redirect from="/" to="home" exact></Redirect> {/* 错误路径执行以下路由 */} <Route component={NotFound}></Route> </Switch> </Router> </div> ) }
第二步,创建页面组件
第三步,创建路由点击组件,使用NavLink
<NavLink to={item.url} activeClassName="active1">{item.name}</NavLink>
to跟路径,activeClassName处在页面是css状态,
import React, { useState } from 'react' import { NavLink } from 'react-router-dom' import './tabBar-style.css' export default function tabBar() { const [name, setName] = useState([{ name: '首页', url: '/home' }, { name: '电影', url: '/films' }, { name: '我的', url: '/center' }]) const [urlList, setList] = useState([]) return ( <div className="tabBar"> <ul> {name.map((item, index) => <li key={index}> {/* <a href={item.url}>{item.name}</a> */} {/* activeClassName="active" */} <NavLink to={item.url} activeClassName="active1">{item.name}</NavLink> </li> )} </ul> </div> ) }
嵌套路由
import React from 'react' import NowPlaying from './home/nowPlaying' import ComingSoon from './home/comingSoon' import { Route, Switch, Redirect } from 'react-router-dom' import NotFound from './notfound' import Films1 from './detail/1' import Rotation from '../../02-base/Rotation' import NavBar from '../components/navBar' export default function home(props) { const fun1 = () => { console.log(props); } return ( <div> {fun1()} <Rotation></Rotation> <NavBar></NavBar> {/* 嵌套路由 */} <Switch> <Route path='/home/nowPlaying' component={NowPlaying}></Route> <Route path='/home/comingSoon' component={ComingSoon}></Route> <Route path='/detail/1' component={Films1}></Route> {/* 模糊匹配 以上都不匹配执行下面路由 路由重定向*/} {/* 精确匹配 exact */} <Redirect from="/home" to="/home/nowPlaying" exact></Redirect> {/* 错误路径执行以下路由 */} <Route component={NotFound}></Route> </Switch> {/* <NowPlaying></NowPlaying> */} </div> ) }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~