react-routerv5中,我能够使用

let keyword = history.location.search

但是在react-routerV6中我得到了一个错误,那么该代码的替代品是什么呢?

编辑:顺便说一下,我不太擅长路由,目前正在从v5转换代码.我想知道在v5中关键字应该返回什么?我现在所处的道路?

推荐答案

103的情况下,您应该从location对象而不是history对象访问search值.

history is mutable

历史对象是可变的.因此,建议访问 来自渲染props <Route>location,而不是来自 history.location.这确保了你对react 的假设是 在生命周期挂钩中进行更正.

如果教程显示使用history.location.search,我不会给它太多权重.

然而,在react-router-dom@6中,不再有route props个,即没有historylocationmatch个props .相反,您可以通过Reaction挂钩访问所有这些内容.请注意,history对象也不再直接expose 给组件,而是通过useNavigate挂钩由navigate函数取代.

为了访问queryStringRRDv6引入了一个新的useSearchParams钩子.

给定URL "/somepath?someQueryParam=123"

import { useSearchParams } from 'react-router-dom';

...

const [searchParams, setSearchParams] = useSearchParams();

const someQueryParam = searchParams.get("someQueryParam"); // 123

其他问题

编辑:顺便说一句,我不太擅长路由,目前正在转换代码 从v5开始,我想知道关键字在v5中应该返回什么?这条路是 我目前在吗?

location.search是一个字符串,因此您可以手动处理该字符串,或者创建URLSearchParams对象.

判断RRDv5 Query Parameters demo

他们创建了一个定制的useQueryHook:

function useQuery() {
  const { search } = useLocation();

  return React.useMemo(() => new URLSearchParams(search), [search]);
}

然后使用getter访问命名查询参数:

let query = useQuery();

...

const name = query.get("name");

Javascript相关问答推荐

具有相同参数的JS类

materialized - activeIndex返回-1

Klaro与Angular的集成

我应该在redux reducer中调用其他reducer函数吗?

Google图表时间轴—更改hAxis文本 colored颜色

Plotly热图:在矩形上zoom 后将zoom 区域居中

如何在Obsidian dataview中创建进度条

v—自动完成不显示 Select 列表中的所有项目

为什么Mutations 观察器用微任务队列而不是macrotask队列处理?

无法读取未定义错误的属性路径名''

如何将Cookie从服务器发送到用户浏览器

如何创建返回不带`new`关键字的实例的类

WP Bootstrap NavWaker:下拉菜单一次打开所有下拉菜单

无法避免UV:flat的插值:非法使用保留字"

无法重定向到Next.js中的动态URL

react 路由如何使用从加载器返回的数据

react 路由DOM有条件地呈现元素

有角粘桌盒阴影

脚本语法错误只是一个字符串,而不是一个对象?

单击时同时 Select 和展开可访问的行