我有一条路由配置如下:

const router = createBrowserRouter([
  {
    path: "/",
    element: <Layout />,
    children: [
      { index: true, element: <Home /> },
      { path: "contacts", element: <Contact /> },
      { path: "info/:link", element: <FooterLinks /> },
      { path: "faq", element: <FAQs /> },
      {
        path: "search",
        element: <SearchResults />,
        loader: async ({ params }) => {
          // NEED ACCESS TO QUERY PARAMETERS HERE
        },
      },
      {
        path: "disease/:id",
        element: <DiseaseDisplay />,
        loader: async ({ params }) => {
          ...
        },
      },
    ],
  },
]);

加载器功能中有没有方法访问路径中的查询参数?例如,如果路由是"localhost:3000/search?searchTerm=aaa",如何在加载器功能中访问searchTerm的值?

推荐答案

Route加载器仅传递Request对象和路由的路径参数,例如{ params, request }.如果您想访问URL搜索字符串,可以从request.url值访问它.

示例:

loader: async ({ params, request }) => {
  const [,searchParams] = request.url.split("?");
  const searchTerm = new URLSearchParams(searchParams).get("searchTerm");

  ...
}

loader: async ({ params, request }) => {
  const searchParams = new URL(request.url).searchParams;
  const searchTerm = searchParams.get("searchTerm");

  ...
}

Javascript相关问答推荐

使用Astro和React的动态API

如何在不指定宽度和高度的情况下显示来自网址的下一张图像

无法在page. evalve()内部使用外部函数

更新Reduxstore 中的状态变量,导致整个应用程序出现不必要的重新渲染

如何从对象嵌套数组的第二级对象中过滤出键

从连接字符串创建客户端时,NodeJS连接到CosmosDB失败

格式值未保存在redux持久切片中

Javascript,部分重排序数组

浮动Div的淡出模糊效果

Next.js(react)使用moment或不使用日期和时间格式

Mongoose post hook在使用await保存时不返回Postman响应

构造HTML表单以使用表单数据创建对象数组

无法检测卡片重叠状态的问题

我可以使用空手道用户界面来获取网页的当前滚动位置吗?

将内容大小设置为剩余可用空间,但如果需要,可在div上显示滚动条

未加载css colored颜色 ,无法将div设置为可见和不可见

让chart.js饼图中的一个切片变厚?

为什么延迟在我的laravel项目中不起作用?

MongoDB中的嵌套搜索

自动滚动功能在当前图像左侧显示上一张图像的一部分