当前位置: 首页 > news >正文

网站名字要备案吗批量关键词调排名软件

网站名字要备案吗,批量关键词调排名软件,建设pc端网站是什么意思,做网站的总结前言 createStaticRouter 是 React Router 专为 服务端渲染(SSR) 设计的 API,用于在服务器端处理路由匹配和数据加载。它在构建静态 HTML 响应时替代了客户端的 BrowserRouter,确保 SSR 和客户端 Hydration 的路由状态一致。 一…

前言

createStaticRouterReact Router 专为 服务端渲染(SSR) 设计的 API,用于在服务器端处理路由匹配数据加载。它在构建静态 HTML 响应时替代了客户端的 BrowserRouter,确保 SSR 和客户端 Hydration 的路由状态一致。

一、createStaticRouter 核心用途

  1. 服务端路由匹配:根据请求 URL 确定渲染的组件
  2. 数据预加载:执行路由的 loader 函数获取初始数据
  3. 错误处理:捕获渲染过程中的路由级错误
  4. SSR/SSG 支持:生成包含初始数据的静态 HTML

二、createStaticRouter 使用步骤详解(配合 Express 示例)

2.1、 定义路由配置

// src/routes.js
import HomePage from "./pages/Home";
import UserPage from "./pages/User";export const routes = [{path: "/",loader: () => fetch("/api/data"), // 数据加载函数element: <HomePage />,errorElement: <ErrorPage /> // 错误边界},{path: "/user/:id",loader: ({ params }) => fetch(`/api/users/${params.id}`),element: <UserPage />}
];

2.2、 服务端路由处理

// server.js
import express from "express";
import { createStaticRouter,StaticRouterProvider 
} from "react-router-dom/server";
import { routes } from "./src/routes";const app = express();app.use("*", async (req, res) => {// 1. 创建请求感知的静态路由const router = createStaticRouter(routes, {basename: "/app",      // 基础路径location: req.originalUrl // 当前请求路径});// 2. 触发所有匹配路由的 loaderconst promises = router.matches.map(match => match.route.loader?.({ request: req, params: match.params }));// 3. 等待数据加载完成const loaderData = await Promise.all(promises);// 4. 将数据注入路由上下文const context = {loaderData,errors: null // 可捕获 loader 错误};// 5. 渲染为 HTML 字符串const html = ReactDOMServer.renderToString(<StaticRouterProvider router={router} context={context} />);// 6. 拼接完整 HTML 响应res.send(`<html><body><div id="root">${html}</div><script>// 注入初始数据供客户端 Hydration 使用window.__STATIC_CONTEXT = ${JSON.stringify(context)};</script></body></html>`);
});

2.3、 客户端 Hydration

// src/client.js
import { hydrateRoot } from "react-dom/client";
import { createBrowserRouter, RouterProvider } from "react-router-dom";
import { routes } from "./routes";// 复用路由配置
const router = createBrowserRouter(routes, {basename: "/app",hydrationData: window.__STATIC_CONTEXT // 注入服务端数据
});hydrateRoot(document.getElementById("root"),<RouterProvider router={router} />
);

三、createStaticRouter关键配置说明

参数 作用

  1. basename: 应用基础路径 (e.g. /app)
  2. location: 当前请求 URL 对象 (必需)
  3. router.matches: 当前 URL 匹配的路由对象数组
  4. context.loaderData: 存储 loader 返回数据的数组,索引与 router.matches 顺序一致

四、createStaticRouter 错误处理机制

// 在路由配置中添加错误边界
{path: "/user/:id",element: <UserPage />,errorElement: <ErrorLayout />, // 捕获本路由及子路由错误loader: async () => {const res = await fetchData();if (res.status === 404) {throw new Response("Not Found", { status: 404 }); // 抛出错误}return res.json();}
}// 服务端捕获错误
try {await Promise.all(promises);
} catch (error) {context.errors = error; // 传递到 StaticRouterProvider
}

五、createStaticRouter 最佳实践

  1. 数据序列化:确保 loader 返回的数据可被序列化为 JSON
  2. 错误类型:使用 Response 对象抛出 HTTP 错误状态
  3. 路由复用:服务端/客户端使用相同的路由配置对象
  4. 缓存控制:对静态路由实现 loader 数据缓存

注意createStaticRouter 仅用于服务端环境,客户端应使用 createBrowserRoutercreateMemoryRouter

http://www.dt0577.cn/news/34298.html

相关文章:

  • 怎么做相册的网站在线咨询 1 网站宣传
  • 网站接做网站单线上营销推广方案模板
  • 网站改版影响国内手机搜索引擎十大排行
  • 英文b2b网站制作新浪体育世界杯
  • phpcms女性网站模板优化网站排名的方法
  • 网站服务器分流怎么做观看b站的广告网站平台
  • 外贸婚纱礼服网站网络推广的常用方法
  • 河南有名的做网站公司厦门最快seo
  • wordpress收录p泉州seo优化
  • wordpress 图片上传限制厦门网站快速排名优化
  • 重庆网站设计找重庆最佳科技宁波免费seo排名优化
  • 黄冈建设信息网站网络营销策划的目的
  • 建外贸商城网站免费的网页模板网站
  • 哪个网站可以做奖状泰安优化关键词排名哪家合适
  • 网站制作过程流程嘉兴百度快照优化排名
  • 常州专门做网站的公司有哪些福州短视频seo服务
  • 排名前十的网页游戏seo网站优化是什么
  • 做网站挣钱的人短视频搜索seo
  • wordpress 网页模块错位太原seo排名优化公司
  • 宜昌网站推广优化关键词首页排行榜
  • 浦城 网站 做百度检索入口
  • 阿里国际网站首页可以做全屏不网络销售是做什么的
  • 东莞网站的制作设计360识图
  • 苍南县住房和城乡规划建设局网站外链网站推荐几个
  • 绍兴网站开发长沙网络营销公司
  • 哪里 教做网站带维护百度渠道开户哪里找
  • 网站流量超限什么意思青海seo技术培训
  • 建网站公司营销型网站建设免费建立自己的网站
  • 有哪些做设计交易网站有哪些内容今日重大军事新闻
  • 自学网站建设好学吗网络营销方式与工具有哪些