如何在成功 api 调用 saga 后更改 url

How to change url after successful api call in 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 一旦我收到服务器的成功响应?

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

这是一个例子:

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

关于你的 React 组件:

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

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