4

用例:

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

  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一旦我收到来自服务器的成功响应?

4

1 回答 1

5

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

这是一个例子:

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

在您的反应组件上:

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

据我了解,您的问题与传奇无关。你可以在你的 react-redux 项目的任何地方实现这个逻辑。

于 2016-09-19T11:53:54.357 回答