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

React+TypeScript中useState钩子setter作为props传递的类型报错问题

问题排查与修正方案

你的判断完全正确,TypeScript报错的核心原因是ApproveModal组件的props类型定义错误。

错误原因

你在ApproveModalProps接口中将setActive的类型定义为boolean,但从父组件传递的setActiveModal是useState返回的状态更新函数,二者类型不匹配触发了类型校验报错。

useState<boolean>(false)返回的更新函数固定类型为:React.Dispatch<React.SetStateAction<boolean>>,既支持直接传入新的布尔值,也支持传入基于旧值计算新值的回调函数。

修正方法

修改ApproveModal组件的props类型定义即可:

// 先从react包导入需要的内置类型
import type { Dispatch, SetStateAction } from 'react'

interface ApproveModalProps {
    active: boolean;
    // 将setActive的类型从boolean替换为下方的函数类型
    setActive: Dispatch<SetStateAction<boolean>>;
}

如果不想引入React的内置类型,也可以手动写等价的函数类型:

interface ApproveModalProps {
    active: boolean;
    setActive: (newValue: boolean | ((prevValue: boolean) => boolean)) => void;
}

可选优化建议

你当前代码里模态框的关闭按钮还没有绑定点击事件,补充后可以实现点击关闭模态框的效果:

<img 
  src={closeIcon} 
  alt="closeIcon" 
  className="close-button" 
  onClick={() => setActive(false)}
/>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:27:02