yarn add react-router-dom@5.3.0
@5 和 @6 两个版本对组件类型的兼容性和函数组件支持有所改变,在这里使用的是 @5。
和路由的类型声明文件
yarn add @types/react-router-dom -D
使用 -D
标志将其添加为开发依赖项,这意味着它只会在开发过程中使用,而不会包含在最终的生产构建中。
src\pages\Layout\index.tsx
export default function Layout() {
return <div>布局页面</div>;
}
src\pages\Login\index.tsx
const Login = () => {
return <div>登录页面</div>;
};
export default Login;
import "./App.scss";
// 导入路由
// as 是ES6中的特性,允许为导入的模块或对象指定新的名称。
import { BrowserRouter as Router, Route } from "react-router-dom";
// 导入页面组件
import Layout from "./pages/Layout";
import Login from "./pages/Login";
// 配置路由规则
function App() {
return (
<Route>
<div className="app">
<Route path="/home">
<Layout></Layout>
</Route>
<Route path="/login">
<Login></Login>
</Route>
</div>
</Route>
);
}
export default App;
匹配默认路由,进行重定向
render
属性:用来内联渲染任意内容在这里修改了路由的导入
import { Router, Route, Switch, Redirect } from “react-router-dom”;
为 Route 组件添加 render
属性,用来渲染自定义内容
在 render 中,渲染 Redirect 实现路由重定向