如何在传奇中成功api调用后更改URL

时间:2016-09-19 11:22:24

标签: reactjs react-router redux-saga

用例:

用户订阅后我想导航到另一个页面,通知用户验证他们的电子邮件。

  try {
    const request = yield call(subcribe, action.payload.data)
    yield put({ type: SUBSCRIBE_SUCCESS, payload: request.data })
    yield put(showNotification(NOTIFICATION_SUCCESS, 'Please check your email.'))
  } catch(e) {
    ...
  }

有没有办法在我收到服务器的成功回复后导航到成功页面,/subscribe-success

1 个答案:

答案 0 :(得分:4)

如果从服务器获得成功响应,则应将redux状态更改为subsribeSuccess:true。这样您就有机会在组件的componentWillReceiveProps(nextProps)中检查此状态,并执行browserHistory.push(' subscribe-success')。

以下是一个例子:

当您的reducer获得SUBSCRIBE_SUCCESS操作类型时,假设您已从reducer将redux状态更改为{... state,subscribeSuccess:true}。

在您的反应组件上:

componentWillReceiveProps(nextProps){
  if(myConnectedReduxState.subscribeSuccess){
    browserHistory.push('subscribe-success');
  }
}

据我所知,你的问题与传奇无关。您可以在react-redux项目中的任何位置实现此逻辑。