小编mil*_*esa的帖子

关于redux工具包中错误处理的问题(已拒绝,已完成)

我正在使用 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)
        }
    }
Run Code Online (Sandbox Code Playgroud)

这段代码实际上做了我想要的事情,但我的问题在于必须使用rejectWithValue(null)代码来通过rejected减速器,这对我来说看起来真的很可疑,这让我相信我对此不太理解。如果我不这样做,即使它进入了 catch,它也会通过减速器fulfilled,从而引发错误,因为这不是预期的并且没有有效负载。

有什么指点吗?有没有一种方法可以在捕获 API 调用(在失败的情况下)时转到被拒绝的减速器而无需显式rejectWithValue

谢谢!

javascript reactjs redux redux-toolkit

2
推荐指数
1
解决办法
8116
查看次数

标签 统计

javascript ×1

reactjs ×1

redux ×1

redux-toolkit ×1