如何在 React 中使用 useHistory 挂钩发送多个参数?
How to send MULTIPLE params with useHistory hook in React?
history.push({pathname: '/search?', state: {param1: 'value1'}})
这行不通。它只是重定向到 /search
history.push('/search?', {param1: 'value1'})
这行不通。
history.push('/search?', ['param1=value1'])
这行不通。
history.push('/search?', [... 'param1=value1'])
这行不通。
history.push('/search?', state: {param1: 'value1'})
这行不通。
唯一有效的是:history.push('/search?param1=value1')
。
但是我需要动态发送多个参数。我怎么做?官方文档显示了第一个带有对象的示例,但它对我不起作用。顺便说一句,我正在使用功能组件。
这个怎么样?
history.push('/search?param1=value1¶m2=value2')
如果我对你的问题的理解正确,你想动态地 get/set URL 的 queryString 参数。
None 您分享的示例有效,因为 history.push
的第二个参数是路由状态。
history.push(path|To, [state])
尝试在第二个参数中传递 queryString 参数无效。
使用 URLSearchParams 构建一个 searchParams
对象,然后您可以更新其参数,以在 history.push
方法中使用。此方法保留任何现有的 queryString 参数。
示例:
const { search } = useLocation();
...
// get the search params for the current location
const searchParams = new URLSearchParams(search);
// update params as necessary, i.e. set/delete
searchParams.set("param1", "value1");
searchParams.set("param2", "value2");
searchParams.set("param3", "value3");
// push new route using to object
history.push({
pathname: "/search",
search: searchParams.toString(),
});
OFC,如果您不需要这种级别的控制而只需要注入三个动态值,您可以使用模板字符串。
history.push(`/search?param1=${value1}¶m2=${value2}¶m3=${value3}`);
history.push({pathname: '/search?', state: {param1: 'value1'}})
这行不通。它只是重定向到 /search
history.push('/search?', {param1: 'value1'})
这行不通。
history.push('/search?', ['param1=value1'])
这行不通。
history.push('/search?', [... 'param1=value1'])
这行不通。
history.push('/search?', state: {param1: 'value1'})
这行不通。
唯一有效的是:history.push('/search?param1=value1')
。
但是我需要动态发送多个参数。我怎么做?官方文档显示了第一个带有对象的示例,但它对我不起作用。顺便说一句,我正在使用功能组件。
这个怎么样?
history.push('/search?param1=value1¶m2=value2')
如果我对你的问题的理解正确,你想动态地 get/set URL 的 queryString 参数。
None 您分享的示例有效,因为 history.push
的第二个参数是路由状态。
history.push(path|To, [state])
尝试在第二个参数中传递 queryString 参数无效。
使用 URLSearchParams 构建一个 searchParams
对象,然后您可以更新其参数,以在 history.push
方法中使用。此方法保留任何现有的 queryString 参数。
示例:
const { search } = useLocation();
...
// get the search params for the current location
const searchParams = new URLSearchParams(search);
// update params as necessary, i.e. set/delete
searchParams.set("param1", "value1");
searchParams.set("param2", "value2");
searchParams.set("param3", "value3");
// push new route using to object
history.push({
pathname: "/search",
search: searchParams.toString(),
});
OFC,如果您不需要这种级别的控制而只需要注入三个动态值,您可以使用模板字符串。
history.push(`/search?param1=${value1}¶m2=${value2}¶m3=${value3}`);