关于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 (第十章内容)

//img.mukewang.com/szimg/611d52ff0998a16816081216.jpg

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

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

//img.mukewang.com/szimg/611d53a60953150a14800536.jpg

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

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

//img.mukewang.com/szimg/611d5496094acd3416600590.jpg

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

//img.mukewang.com/szimg/611d5633090021d013840458.jpg

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






1
0

React18 系统精讲 结合TS打造旅游电商平台

React18 精讲 + 结合 TS 实战 + 热门业务开发,获取必备技能

1993 学习 · 1015 问题

查看课程