React-router:有没有办法使用历史推送来在此当前路径之后附加查询字符串?
React-router: is there a way to use push from history to append a query string after this current path?
我当前的 URL 是 /foo
,我想向其中添加一个查询字符串,即 /foo?date=2022-02-15
我的方法是location.search = queryString
,它可以工作,但会导致完全重新加载。我想使用 react-router
中的历史记录 API,这样我就可以避免完全重新加载。
但是 history.push
将用 date=2022-02-15
替换整个路径 /foo
(所以 URL 将是 date=2022-02-15
而不是 /foo?date=2022-02-15
) 因为它不会像 location.search
那样将 ?date=2022-02-15
附加到当前路径 /foo
。那么有没有一种方法可以使用 history
API 来实现相同的行为?
可以从当前正在匹配渲染的路由的location
对象中获取当前pathname
示例:
const location = useRouteMatch();
const queryString = "date=2022-02-15";
...
// as a string
history.push(`${location.pathname}?${queryString}`);
// or as an object
history.push({
pathname: location.pathname,
search: `?${queryString}`,
});
我当前的 URL 是 /foo
,我想向其中添加一个查询字符串,即 /foo?date=2022-02-15
我的方法是location.search = queryString
,它可以工作,但会导致完全重新加载。我想使用 react-router
中的历史记录 API,这样我就可以避免完全重新加载。
但是 history.push
将用 date=2022-02-15
替换整个路径 /foo
(所以 URL 将是 date=2022-02-15
而不是 /foo?date=2022-02-15
) 因为它不会像 location.search
那样将 ?date=2022-02-15
附加到当前路径 /foo
。那么有没有一种方法可以使用 history
API 来实现相同的行为?
可以从当前正在匹配渲染的路由的location
对象中获取当前pathname
示例:
const location = useRouteMatch();
const queryString = "date=2022-02-15";
...
// as a string
history.push(`${location.pathname}?${queryString}`);
// or as an object
history.push({
pathname: location.pathname,
search: `?${queryString}`,
});