gpt4 book ai didi

javascript - 在组件外部的 react-router v5 中以编程方式访问历史记录(history.push 等)

转载 作者:行者123 更新时间:2023-12-03 22:40:36 31 4
gpt4 key购买 nike

我曾经能够在 <= v4 中将历史传递到 React Router:

import { Route } from 'react-router-dom';
import { createBrowserHistory } from 'history';

const history = createBrowserHistory();

<Router history={history}>
<App />
</Router>

编辑:糟糕,我正在使用 Router之前不是 BrowserRouter这是 SSR 所需要的。 BrowserRouter 可能从来没有给出这个选项。所以似乎唯一的解决方案是拆分入口组件并从 useHistory 获取历史记录。 hook 然后传递给 ApolloClient管他呢。

投票结束。

最佳答案

也许我的代码可以帮助你:

import { createBrowserHistory } from "history";
import qs from "qs";

const history = createBrowserHistory();

history.location = {
...history.location,
query: qs.parse(history.location.search.substr(1)),
state: {},
};
history.listen(() => {
history.location = {
...history.location,
query: qs.parse(history.location.search.substr(1)),
state: history.location.state || {},
};
});

const { go, goBack, push, replace } = history;

export { go, goBack, push, replace, getRedirectPath };
export default history;


然后在 react-router history 属性中使用此文件中公开的历史记录。现在,您可以在组件外部或内部使用公开的 go 或 push 函数。

关于javascript - 在组件外部的 react-router v5 中以编程方式访问历史记录(history.push 等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60052418/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com