将useState更新器作为Props传递给子组件时提示‘不是函数’错误求助
解决"Uncaught TypeError: setStep is not a function"错误
问题出在子组件的参数接收方式上:
- React函数组件的参数是单个props对象,而非独立的多个参数。你当前把
step和setStep作为两个分开的参数传入,实际上第一个参数是包含所有传入属性的对象,第二个参数会是undefined,调用setStep自然会触发"不是函数"的错误。
修正后的子组件代码:
const StepZero = ({ step, setStep }: { step: number; setStep: (value: number) => void }) => { const handleIncrement = () => { setStep(step + 1); }; return ( // ... 你的其他JSX内容 <div onClick={handleIncrement}>SELECT & CONTINUE</div> ); };
说明:
- 使用对象解构从props对象中提取
step和setStep属性,这样就能正确获取父组件传递的状态和更新函数。 - 替换模糊的
any类型,明确setStep的类型为(value: number) => void,让TypeScript提供更准确的类型检查。
父组件的代码没有问题,只需修改子组件的参数处理逻辑即可解决报错。
内容的提问来源于stack exchange,提问作者Lorenzo Durante
相关产品推荐
相关产品推荐

