请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于9.8章节中使用createAsyncThunk的问题

图片描述
似乎在单独的一个createSlice片段中,reducer字段和extraReducer字段只能有一个生效,我尝试不删除reducer的内容,那么无法使得createAsyncThunk异步Action生效,我很疑惑,reducer和extraReducer之间到底是什么关系,区别在哪里,发别在什么场景中使用!!!

正在回答 回答被采纳积分+3

1回答

阿莱克斯刘 2021-08-19 02:49:38

hello 同学你好,这个问题沉了,刚刚才看到,拖了这么久回复,实在不好意思。

在一个createSlice片段中,reducer字段和extraReducer字段可以共存,都可以生效,比如说课程的userSlice (第十章内容)

//img1.sycdn.imooc.com//szimg/611d52ff0998a16816081216.jpg

那么reducer和extraReducer有什么区别呢?关于这个问题,中文资料非常有限,但是在stackoverflow上有关于这个问题的答案。

https://stackoverflow.com/questions/66425645/what-is-difference-between-reducers-and-extrareducers-in-redux-toolkit

//img1.sycdn.imooc.com//szimg/611d53a60953150a14800536.jpg

另外,也可以参考这篇文章:

https://dd.engineering/blog/a-practical-introduction-to-using-redux-with-react

//img1.sycdn.imooc.com//szimg/611d5496094acd3416600590.jpg

简单来说,extraReducer就是普通reducer的加强版, 它可以为一个已经存在的action创建reducer。比如说,如果我们需要从别的slice中使用action,就需要通过extraReducer来处理了。也就是说如果一个action是独立于slice存在的,比如说我们课程中所有的异步 thunk action(如 export const getProductDetail = createAsyncThunk ),都是独立于slice定义,并且独立与slice使用的, 那么就需要我们使用extraReducer来处理了。

//img1.sycdn.imooc.com//szimg/611d5633090021d013840458.jpg

slice中每个普通的reducer会自动地、一对一地、创建它所对应的action,而extraReducer则不会创建action。






1 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信