You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redux Toolkit中action.payload无法同步至state的问题排查

React + Redux Toolkit异步请求问题:payload存在但state不更新

我是React和Redux Toolkit新手,尝试从本地API获取posts数据。Redux DevTools中能看到action.payload,但无法将其同步到state中。

postSlice.js 代码

import { createSlice, createAsyncThunk } from "@reduxjs/toolkit";
import axios from "axios";


export const getPosts = createAsyncThunk("posts", async () => {
  try {
    const res = await axios({
      method: "get",
      url: `${process.env.REACT_APP_API_URL}api/post`,
      withCredentials: true,
    });
    console.log(res.data);
    return res.data;
  } catch (err) {
    return err.res.data;
  }
});
const postsSlice = createSlice({
  name: "posts",
  initialState: {
   posts: [],
   loading: false,
   error:"",
  },
  extrareducers: {
   [getPosts.pending]: (state, action) => {
     state.loading = true;
   },
   [getPosts.fulfilled]: (state, action) => {
     console.log(action.payload);
     state.loading = false;
     state.posts = action.payload;
   },
   [getPosts.rejected]: (state, action) => {
     state.loading = false;
     state.posts = action.payload.message;
   },
 },
 });


export default postsSlice.reducer;

React组件中dispatch代码

import { useDispatch } from "react-redux";
import { getPosts } from "../redux/features/postSlice";
const Thread = () => {
const [loadPost, setLoadPost] = useState(true);
const dispatch= useDispatch();
  
  useEffect(() => {
    if (loadPost ) {
      dispatch(getPosts());
      setLoadPost(false)
    }
  }, [loadPost, dispatch]);

  return <div>Fil d'actualités</div>;
};

export default Thread;

Redux DevTools状态展示

posts(pin):[]
loading(pin): false
error(pin): ""

Action中的payload展示

payload (pin): [{...}{...}{...}]

同时,pending、fulfilled和rejected状态下loading值始终不变,fulfilled中的console.log也未执行,action似乎完全未影响state。我另有一个异步reducer可正常工作,希望得到帮助。


编辑:我发现了问题!是声明extraReducers时拼写错误,写成了extrareducers(小写r),这种错误实在让人懊恼。


内容的提问来源于stack exchange,提问作者Nevid Rahal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 19:05:22