`react-router-dom`是一个用于在 react 应用中实现路由功能的重要库
一、实现页面导航
1. 声明式路由定义
1.1 基本原理
使用`react-router-dom`可以在代码中直接定义一个路由规则,如从`/home`路径导航到`home`组件。
1.2 代码示例
`router` 路由根容器,`routes` 包裹所有的路由规则,`route` 定义了一条具体的路由,包括路径(`path`)和对应的组件(`element`)。
import { browserrouter as router, route, routes } from "react-router-dom";
import home from "./home";
import about from "./about";
const app = () => {
return (
<router>
<routes>
<route path="/home" element={<home />} />
<route path="/about" element={<about />} />
</routes>
</router>
);
};
export default app;2. 动态路由匹配
2.1 处理可变路径参数
可以定义一个路由路径为`/user/:id`,其中`:id`就是动态参数。
2.2 代码示例
import {
browserrouter as router,
route,
routes,
useparams,
} from "react-router-dom";
const userdetail = () => {
const { id } = useparams();
return (
<div>
<h1>user detail for id: {id}</h1>
</div>
);
};
const app = () => {
return (
<router>
<routes>
<route path="/user/:id" element={<userdetail />} />
</routes>
</router>
);
};
export default app;二、嵌套路由和布局管理
1. 嵌套路由实现
1.1 构建多层级页面结构
例如:有一个父路由`/blog`,其下包含子路由`/blog/posts`(文章列表)和`/blog/post/:id`(单个文章详情)。
1.2 代码示例
import { browserrouter as router, route, routes } from "react-router-dom";
import blog from "./blog";
import blogposts from "./blogposts";
import blogpostdetail from "./blogpostdetail";
const app = () => {
return (
<router>
<routes>
<route path="/blog" element={<blog />}>
<route path="posts" element={<blogposts />} />
<route path="post/:id" element={<blogpostdetail />} />
</route>
</routes>
</router>
);
};
export default app;2. 布局管理与共享布局组件
2.1 统一布局应用
假设我们有一个名为`layout`的布局组件,包含了导航栏和侧边栏。
2.2 代码示例
import { browserrouter as router, route, routes } from "react-router-dom";
import layout from "./layout";
import home from "./home";
import about from "./about";
const app = () => {
return (
<router>
<routes>
<route path="/" element={<layout />}>
<route path="home" element={<home />} />
<route path="about" element={<about />} />
</route>
</routes>
</router>
);
};
export default app;三、代码分割和懒加载
1. 懒加载原理和优势
1.1 优化初始加载性能
例如:将每个模块的组件懒加载,使得应用在初始启动时只加载必要的组件。
1.2 代码示例
import {
browserrouter as router,
route,
routes,
lazy,
suspense,
} from "react-router-dom";
const dashboard = lazy(() => import("./dashboard"));
const reports = lazy(() => import("./reports"));
const settings = lazy(() => import("./settings"));
const app = () => {
return (
<router>
<routes>
<route
path="/dashboard"
element={
<suspense fallback={<div>loading...</div>}>
<dashboard />
</suspense>
}
/>
<route
path="/reports"
element={
<suspense fallback={<div>loading...</div>}>
<reports />
</suspense>
}
/>
<route
path="/settings"
element={
<suspense fallback={<div>loading...</div>}>
<settings />
</suspense>
}
/>
</routes>
</router>
);
};
export default app;到此这篇关于reactrouter dom库作用小结的文章就介绍到这了,更多相关reactrouter dom库内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论