【发布时间】:2017-07-20 14:38:43
【问题描述】:
我正在使用 redux 中的 fetch 进行错误处理。人们是否通常为每个请求编写 reducers/actions 错误处理程序,例如来自 redux.js.org 的视频?我正在考虑发送带有错误标志的相同操作来处理错误,但我不知道这是否是正确的方法。
【问题讨论】:
标签: javascript redux
我正在使用 redux 中的 fetch 进行错误处理。人们是否通常为每个请求编写 reducers/actions 错误处理程序,例如来自 redux.js.org 的视频?我正在考虑发送带有错误标志的相同操作来处理错误,但我不知道这是否是正确的方法。
【问题讨论】:
标签: javascript redux
根据我的经验,是的。我通常有GET_THINGS、GET_THINGS_SUCCESS 和GET_THINGS_ERROR 之类的操作,然后在reducer 中有一个case 语句来处理每个操作。我认识的大多数 React 开发人员都做得很好。一般来说,我建议遵循这种模式。也就是说,它确实导致您必须以基本相同的方式处理大量 GET 操作和 ERROR 操作,因为您可能只是向状态添加类似 { Loading: true } 或 { Error: true } 的内容。 .
【讨论】:
对于错误处理和发布/放置数据,我使用一种通用的方式来引发一个对话框,让用户指示成功或失败。
例如有一个通知动作 const NotificationAction = (open = false, message = '', status = 'success') => ({type: NOTIFICATION, payload: {open, message, status}})
还有一些对话框组件,它会引发一个对话框或snackBar来显示一条消息
当你的请求失败时发送这个
myRequest()
.then((response) => {
if (response.status === 200) {
dispatch(projectsSuccess(response.data))
}
})
.catch((error) => {
dispatch(NotificationAction(true, `My Error Text : ${error}`, 'error'))
})
这样你可以减少你在 reducer 中的样板代码
【讨论】: