在我的案例中,关于错误的信息深深地存在于响应中,我试图将我的项目移动到redux-toolkit
。这是它曾经的样子:
catch(e) {
let warning
switch (e.response.data.error.message) {
...
}
}
字符串
问题是redux-toolkit
没有把这些数据放在rejected
action creator中,我无法访问错误消息,它把他的消息而不是最初的消息:
的数据
虽然原始的响应看起来像这样:
的
那么,我如何检索这些数据呢?
4条答案
按热度按时间ef1yzkbh1#
根据文档,RTK的
createAsyncThunk
具有默认的错误处理-它将Error
示例的序列化版本作为action.error
调度。如果您需要自定义
rejected
操作中的内容,则由您自己捕获初始错误,并使用rejectWithValue()
来决定操作中的内容:字符串
aamkag612#
我们使用thunkAPI,payloadCreator中的第二个参数; * 包含通常传递给Redux形实转换函数的所有参数,以及附加选项 *:对于我们的示例,
async(obj, {dispatch, getState, rejectWithValue, fulfillWithValue})
是我们的payloadCreator,具有所需的参数;这是一个使用fetch api的示例
字符串
切片中的简单示例:
型
处理错误
请注意:
rejectWithValue
-实用程序(来自thunkAPI的附加选项),您可以在action creator中返回/抛出,以返回具有定义的payload和Meta的rejected响应。它将传递您给予的任何值,并在rejected action的**payload* 中返回它。y1aodyip3#
对于那些使用apisauce(使用axios的 Package 器,带有标准化错误+请求/响应转换)
由于apisauce总是解析Promises,所以您可以检查
!response.ok
并使用rejectWithValue
处理它。(注意!,因为我们想检查请求是否notok)字符串
mrwjdhj34#
我的问题是没有立即检测组件中的错误,在await dispatch抛出rejected后。我尝试用我调度的代码try catch,rejectWithValue没有抛出异常。
我发现了一个技巧,我使用了Thunkapi网站文档中的这段代码,它可以让我检测Thunkapi是否抛出异常。
字符串