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
相关产品推荐
相关产品推荐

