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

React使用setEditMode设置布尔值触发Type Error,求原因及解决方案

问题原因

你把状态值当成状态更新函数传给了组件的setEditMode属性。组件要求setEditMode是一个(editMode: boolean) => void类型的回调函数,但你传进去的是布尔值,TypeScript因此抛出类型不匹配的错误。

最优解决方法

假设你用useState管理编辑状态,按以下步骤修正:

  • 父组件里正确解构useState返回的状态和更新函数:
const [editMode, setEditMode] = useState(false);
  • 调用子组件时,传入setEditMode这个函数,而不是editMode状态值:
<YourComponent setEditMode={setEditMode} />

同时要确保子组件的Props类型定义正确:

interface YourComponentProps {
  setEditMode: (editMode: boolean) => void;
}

const YourComponent = ({ setEditMode }: YourComponentProps) => {
  // 组件内调用setEditMode时,传入布尔值即可,比如setEditMode(true)
  return <div>...</div>;
};
额外检查点
  • 确认子组件内调用setEditMode时,传入的是布尔值,不是其他类型。
  • 检查父组件里有没有把状态和更新函数的名字搞混,比如误写为setEditMode={editMode}。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 16:23:15