Programmati c доступ к истории (history.pu sh et c) в реакции-маршрутизаторе v5 вне компонентов - PullRequest
1 голос
/ 04 февраля 2020

Раньше я мог передавать историю в React Router в <= v4: </p>

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

const history = createBrowserHistory();

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

Редактировать: Плохо, раньше я использовал Router, а не BrowserRouter который нужен для ССР. Возможно, BrowserRouter никогда не предоставлял эту опцию. Таким образом, кажется, что единственное решение состоит в том, чтобы разделить входной компонент и получить историю из useHistory ловушки, а затем передать ее в ApolloClient или как угодно.

Голосование за закрытие.

Ответы [ 3 ]

1 голос
/ 04 февраля 2020

Может быть, мой код может вам помочь:

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;

И затем использовать выставленную историю в этом файле в prop-истории. Теперь вы можете использовать открытые функции go или pu sh снаружи компонентов или внутри.

0 голосов
/ 09 апреля 2020

Спасибо, так что использование import { Router } from 'react-router-dom'; вместо BrowserRouter помогло! Кроме того, вам необходимо импортировать свою историю и передать ее в качестве маршрутизатора: <Router history={history}>

Тогда history.pu sh выполнит повторную визуализацию.

0 голосов
/ 04 февраля 2020

вы можете попробовать

import { createBrowserHistory } from "history";

createBrowserHistory().push("/login");

, это работает с "response-router-dom": "^ 4.2.2", кажется, это не связано с вашим вопросом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...