【发布时间】:2021-06-08 18:16:32
【问题描述】:
我开始使用 redux-toolkit,在阅读了文档并实现了一些代码之后,有些东西我不太明白,或者我的方法可能是错误的,这就是我在这里问的原因。
无论如何,我有一些带有 asyncThunk 的切片,它调用 API 并根据该调用返回的值设置一些状态,如果失败,则显示错误通知和一些日志记录。我现在不在工作,所以我会写一些伪代码:
const loadData = createAsyncThunk('loadData',
async ({ product }, { dispatch, extra: { API }, rejectWithValue }) => {
try {
const response = await API.getProduct(product)
return response
} catch (error) {
dispatch(setErrorNotification(error.message))
dispatch(logError(error))
rejectWithValue(null)
}
}
这段代码实际上做了我想要的,但我的问题在于必须使用 rejectWithValue(null) 让代码通过 rejected 减速器,这对我来说真的很可疑,它让我相信我不是很好理解这一点。如果我不这样做,即使它进入了 catch,它也会通过 fulfilled 减速器抛出一个错误,因为这不是预期的并且没有有效负载。
有什么建议吗?有没有办法在捕获 API 调用时(在失败的情况下)去被拒绝的减速器而不必显式地rejectWithValue?
谢谢!
【问题讨论】:
标签: javascript reactjs redux redux-toolkit