Кроме того, вы, вероятно, создадите экземпляр объекта истории вместе с другим начальным состоянием, чтобы ваша логика инициализации истории не была единственным исключением в отношении того, как инициализируется состояние приложения.
ел бы перенаправить на новую страницу после успешного входа в систему. Маршруты (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
экземпляр саги?