🎙欢迎收听《前端达人 · React播客书单》第 22 期。
今天我们来聊两个你写 React 项目绕不开的关键词:
这俩看似不相关,其实一个掌握了状态表达的“路径语言”,一个搞定了性能优化的最后一公里。
来看这个熟悉的地址👇
https://example.com/products?category=books&page=2
问号 ?
后面就是“搜索参数”,又叫“查询参数”:
&
分隔📦 比如:你希望刷新、返回、复制链接时都能保留筛选状态,那就要用它!
React Router 给了我们一个钦定 Hook:
const [searchParams, setSearchParams] = useSearchParams();
它返回两个值:
返回值 | 作用 |
---|---|
searchParams | 当前 URL 参数的读取器 |
setSearchParams | 修改参数并更新 URL 的 setter |
// 读取搜索词
const keyword = searchParams.get("q");
// 设置新参数
setSearchParams({ q: "react", page: "2" });
✅ 自动同步到地址栏 ✅ 自动触发组件更新 ✅ 支持前进后退、分享链接,一气呵成!
一个经典的博客或商品列表页面,有以下需求:
?q=react&page=1
?q=react&page=2
用搜索参数,就像给应用状态加上了“地址快照”能力。
想象你在做一个后台管理系统,页面包括:
默认情况下,打包工具会把所有页面 JS 都一起打包,首屏加载时就要下载完所有代码。
🧨 这意味着:
用户只看首页,也得等所有 JS 加载完才能看到页面 → “白屏 + 卡顿”
这就是性能杀手!
👉 懒加载 = 只加载当下需要的组件代码React 官方提供了两大利器:
const AdminPage = React.lazy(() => import('./AdminPage'));
<Suspense fallback={<Loading />}>
<AdminPage />
</Suspense>
API | 说明 |
---|---|
React.lazy | 动态导入组件,按需加载 |
React.Suspense | 包裹组件,定义加载过程的占位 UI(fallback) |
💡 搭配使用后,能实现真正的“代码分割”,提升加载体验!
最常见的场景:路由级懒加载
<Route path="/admin" element={
<Suspense fallback={<Loading />}>
<AdminPage />
</Suspense>
} />
🧠 当用户跳转到 /admin
:
AdminPage
所需的 JS 文件<Loading />
显示出来,避免白屏🚀 这就是提升页面加载速度的秘密武器。
[ 搜索框输入 ] → setSearchParams → URL 更新
↓
组件读取参数 useSearchParams → 发请求 → 渲染 UI
[ 路由跳转 ] → 触发懒加载 → fallback 占位 → 加载完成 → 正式渲染
📌 两种方式都“让状态更清晰,体验更流畅”。
✅ 初学者练习:
useSearchParams
实现搜索 + 翻页功能✅ 进阶者练习:
/admin
、/profile
路由的按需加载<Loading />
组件,提升加载时用户体验技术点 | 用途 |
---|---|
useSearchParams | 管理 URL 状态(搜索、过滤、分页) |
React.lazy + Suspense | 组件懒加载,实现代码分割、加速加载速度 |
这两招搭配使用,能让你的 SPA 更像一个“响应式应用 + 传统网页”的结合体:
👉 状态可控、地址同步、体验顺滑、性能更优。
#React #React播客 #前端播客 #前端达人 #TypeScript