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

React Redux中axios.post传参报错:期望0个参数却收到1个

问题解决:Redux Toolkit中axios.post参数不匹配错误

错误原因

你遇到的Expected arguments: 0, received: 1错误,根源在于addFavoriteFetch这个createAsyncThunk没有正确声明参数类型。TypeScript会默认推断这个thunk不接受任何参数,而你在组件中调用时传入了对象参数,导致类型不匹配。

修复步骤

1. 修正createAsyncThunk的类型声明

给addFavoriteFetch添加泛型类型注解,明确指定它接受的参数类型和返回值类型:

// 假设IFavorite包含id、img、title、price这些属性
export const addFavoriteFetch = createAsyncThunk<void, IFavorite>(
    'addFavorite/addFavoriteFetch',
    async (params) => {
        console.log(params);
        // 如果API返回创建后的单个收藏项,这里泛型用IFavorite而非IFavorite[]
        await axios.post<IFavorite>('http://localhost:3001/favorite', params);
    }
);
  • 第一个泛型void表示这个thunk没有返回值(如果API返回创建的数据,也可以改为IFavorite并返回data);
  • 第二个泛型IFavorite指定了thunk接受的参数类型,这样TypeScript就知道允许传入一个IFavorite类型的参数。

2. 确认组件中传递的参数类型

确保组件中传递给addFavoriteFetch的对象结构与IFavorite类型一致:

// 组件中的dispatch调用(原代码的括号写法没问题,但确保变量存在)
<img 
    onClick={() => dispatch(addFavoriteFetch({id, img, title, price}))} 
    className={styles.contentProductsFavorite} 
    src={favorite ? '/images/heartclick.png' : "/images/heart.png"} 
    alt="" 
/>

3. 可选:返回API响应数据(如果需要)

如果你的API会返回创建后的收藏项数据,可以修改thunk来返回它,方便后续在reducer中处理:

export const addFavoriteFetch = createAsyncThunk<IFavorite, IFavorite>(
    'addFavorite/addFavoriteFetch',
    async (params) => {
        const { data } = await axios.post<IFavorite>('http://localhost:3001/favorite', params);
        return data; // 返回创建后的收藏项
    }
);

这样修改后,TypeScript的参数不匹配错误就会消失,axios.post也能正确传递数据到后端。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:02:51