history.push не вызывает изменения местоположения, когда ssr - PullRequest
0 голосов
/ 25 июня 2018

У меня есть следующий код сервера:

  const store = configureStore({}, history);

  const context: any = { store };

  const app = (
    <Provider store={store}>
      <StaticRouter location={req.url} context={context}>
        <Application />
      </StaticRouter>
    </Provider>
  );
// render app

И следующий подключенный маршрутизатор на стороне клиента:

    <Provider store={store}>
      <ConnectedRouter history={history}>
        <Application />
      </ConnectedRouter>
    </Provider>

Я вижу, что промежуточное ПО правильно подключено и метод history.push вызывается здесь .

Но браузер не перенаправляет.

Что может заставить браузер не перенаправлять?

1 Ответ

0 голосов
/ 26 июня 2018

Оказывается, у меня было 2 разных экземпляра истории, 1 в промежуточном программном обеспечении маршрутизатора и 1 в ConnectedRouter.

Проверка того, что у них обоих был один и тот же экземпляр, устранила проблему.

У меня есть этот файл, который я импортирую туда, куда мне нужно:

import { createBrowserHistory } from 'history';
import { createMemoryHistory } from 'history';
import { RouterHistory } from '../types';
const selectedHistory: RouterHistory = typeof window !== 'undefined' ? createBrowserHistory : createMemoryHistory;

export const history = selectedHistory();

А затем убедитесь, что я импортирую этот файл и не делаю несколько копий истории:

import { history } from '../../routes/history';
//etc.
          <ConnectedRouter history={history}>
...