Кроме того, вы, вероятно, создадите экземпляр объекта истории вместе с другим начальным состоянием, чтобы ваша логика инициализации истории не была единственным исключением в отношении того, как инициализируется состояние приложения.

ел бы перенаправить на новую страницу после успешного входа в систему. Маршруты (V4) используются так:

import { browserHistory } from '....browser_history_signleton';
...

class App extends Component {
  render() {
    const { authentication: { isSignedIn } } = this.props;
    return (
      <ConnectedRouter history={browserHistory}>
        <div>
          <Header/>
          <Route exact path="/" component={Home}/>
          <PrivateRoute isAuthorized={isSignedIn} path="/page1" component={PageOne}/>
          <PrivateRoute isAuthorized={isSignedIn} path="/page2" component={PageTwo}/>
        </div>
      </ConnectedRouter>
    );
  }
}

Сага выглядит так:

import { browserHistory } from '....browser_history_signleton';

export function* loginSaga() {
  while (true) { // eslint-disable-line no-constant-condition
    try {
      const payload = yield take(LOGIN_SUBMIT);
      const raceResult = yield race({
        signin: call(loginRequest, payload),
        logout: take('LOGOUT')
      });
      if (raceResult.signin) {
        const { data }  = raceResult.signin;
        yield put(loginRequestSucceeded(data));
        const redirectUrl = `.....based on location.state.from.pathname`
        browserHistory.push(rediretUrl);
        ...

Моя главная проблема заключается в том, как поделитьсяbrowserHistory. createHistory отhistory Модуль не является сигналом, поэтому мне пришлось добавить:

// browser_history_signleton.js
import createHistory from 'history/createBrowserHistory';

export const browserHistory = createHistory();

Какой самый эффективный способ обеспечитьhistory экземпляр саги?

Ответы на вопрос(1)

Ваш ответ на вопрос