【问题标题】:How to translate errors which occurs in redux-saga?如何翻译 redux-saga 中出现的错误?
【发布时间】:2019-04-02 05:20:53
【问题描述】:
我有一个问题,如何翻译 redux-saga 中捕获的错误。你在 React-Redux 中的表现如何?
我正在尝试这样做:
catch (error) {
if(error.response.payload.error==='Unauthorized'){
Alert.error(<FormattedMessage {...messages.unauthorizedMessage} />, {
html: false,
});
}
【问题讨论】:
标签:
react-redux
alert
redux-saga
react-intl
【解决方案1】:
在 saga catch 块中,调度一个动作:
// saga:
catch(error) {
if(error.response.payload.error==='Unauthorized'){
yield put({
type: 'UNAUTHORIZED_REQUEST',
message: messages.unauthorizedMessage
})
}
}
然后在reducer中,根据action更新状态:
const requestError = (state = null, { type, message }) => {
case 'UNAUTHORIZED_REQUEST':
return message;
default:
return state;
}
然后,让组件呈现错误消息以反映更新后的状态:
let MyComponent = ({ requestError }) => {
return (
<div>
{requestError &&
<MyErrorMessage message={requestError} />
}
{/* ... */}
</div>
)
}
MyComponent = connect(
state => ({
requestError: state.requestError
})
)(MyComponent)