你好,我有一个非常奇怪的问题。我用CreateAsyncThunk获取数据,并很好地接收它们,但状态没有改变
const initialState = {
posts: [],
status: "idle", //idle | loading | success | failed
error: null,
};
export const fetchPosts = createAsyncThunk("posts/fetchPosts", async () => {
const response = await axios.get(POSTS_URL);
return response.data;
});
下面是我的addCase:
extraReducers: (builder) => {
builder.addCase(fetchPosts.fulfilled, (state, action) => {
state.status = "success";
console.log("test")
state.posts = action.payload;
});
},
Here is my Redux devtools actionHere is my Redux devtools state
甚至我的addCase中的控制台日志也没有显示
它看起来不属于任何addCase
2条答案
按热度按时间zmeyuzjn1#
如果addCase函数中的控制台日志没有显示,则可能意味着异步thunk没有分派extraReducers函数正在侦听的操作。
一种可能是根本没有调用异步thunk。请确保在应该使用获取的数据的组件中调用了异步thunk。
另一种可能是调用异步thunk时出错,可以在异步thunk调用周围添加一个try-catch块,以查看它是否抛出错误。
此外,确保在定义extraReducers函数的同一存储中使用异步thunk。
最后,可能是您试图更新的状态对象的status和posts属性不存在,或者使用此数据的组件使用了错误的状态对象。请仔细检查初始状态对象,并确保您试图更新的属性存在
yhxst69z2#
谢谢你的回复@弗拉基米尔,但是我刚刚发现我的错误......
我只是把额外的减速器放在减速器块里。
And it was fixed simply by moving the extraReducers OUTSIDE the reducers block.... Newbie problem :)