关于9.8章节中使用createAsyncThunk的问题
来源:10-6 【redux-toolkit】createSlice、reducer、与immer

weixin_慕神3292065
2021-04-06
似乎在单独的一个createSlice片段中,reducer字段和extraReducer字段只能有一个生效,我尝试不删除reducer的内容,那么无法使得createAsyncThunk异步Action生效,我很疑惑,reducer和extraReducer之间到底是什么关系,区别在哪里,发别在什么场景中使用!!!
1回答
-
阿莱克斯刘
2021-08-19
hello 同学你好,这个问题沉了,刚刚才看到,拖了这么久回复,实在不好意思。
在一个createSlice片段中,reducer字段和extraReducer字段可以共存,都可以生效,比如说课程的userSlice (第十章内容)
那么reducer和extraReducer有什么区别呢?关于这个问题,中文资料非常有限,但是在stackoverflow上有关于这个问题的答案。
另外,也可以参考这篇文章:
https://dd.engineering/blog/a-practical-introduction-to-using-redux-with-react
简单来说,extraReducer就是普通reducer的加强版, 它可以为一个已经存在的action创建reducer。比如说,如果我们需要从别的slice中使用action,就需要通过extraReducer来处理了。也就是说如果一个action是独立于slice存在的,比如说我们课程中所有的异步 thunk action(如 export const getProductDetail = createAsyncThunk ),都是独立于slice定义,并且独立与slice使用的, 那么就需要我们使用extraReducer来处理了。
slice中每个普通的reducer会自动地、一对一地、创建它所对应的action,而extraReducer则不会创建action。
10
相似问题