React报错this.setState is not a function问题查询与修复方案咨询
问题原因
- 你在
onSubmit方法里错误地把React组件内置的setState实例方法直接覆盖成了状态对象:
// 错误写法,直接把setState方法赋值为defaultState对象 this.setState = (defaultState);
这行代码执行后,原本用于更新状态的setState方法被替换成了普通的JS对象,后续你在handleChange里调用this.setState的时候,自然会提示“setState不是函数”。
- 你之前打印defaultState的type值能正常返回,是因为这个操作是在
onSubmit执行、覆盖setState之前触发的,覆盖操作只在你点击提交按钮之后才会执行,提交前所有的状态操作都正常。
修复方案
把onSubmit里重置表单的错误写法,改成正确的setState调用格式即可:
// 替换原来的 this.setState = (defaultState); this.setState(defaultState);
去掉赋值的等号,用正确的setState传参方式传入要重置的状态对象即可,修改后setState方法不会被覆盖,后续所有调用都会正常执行。
内容的提问来源于stack exchange,提问作者V4L3N7Y
相关产品推荐
相关产品推荐

