如何在成功 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 项目中的任何地方实现这个逻辑。
用例:
用户订阅后我想导航到另一个页面,通知用户验证他们的电子邮件。
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 项目中的任何地方实现这个逻辑。