为什么ReactJS组件handleChange方法出现setState undefined错误?
下面是一个简单的用户配置文件页面ReactJS+Reactstrap+Axios 在handleChange方法中使用setState时出错 我试过几种方法来设置状态,但什么也做不了。这可能是一个更深层次的问题。。。或者链接到JSON解析和字符串化 表单的显示工作正常 错误堆栈:为什么ReactJS组件handleChange方法出现setState undefined错误?,reactjs,axios,setstate,react-dom,reactstrap,Reactjs,Axios,Setstate,React Dom,Reactstrap,下面是一个简单的用户配置文件页面ReactJS+Reactstrap+Axios 在handleChange方法中使用setState时出错 我试过几种方法来设置状态,但什么也做不了。这可能是一个更深层次的问题。。。或者链接到JSON解析和字符串化 表单的显示工作正常 错误堆栈: user-form.js?c7a5:69 Uncaught TypeError: Cannot read property 'setState' of undefined at handleChange (u
user-form.js?c7a5:69 Uncaught TypeError: Cannot read property 'setState' of undefined
at handleChange (user-form.js?c7a5:69)
at HTMLUnknownElement.callCallback (react-dom.development.js?61bb:188)
at Object.invokeGuardedCallbackDev (react-dom.development.js?61bb:237)
at invokeGuardedCallback (react-dom.development.js?61bb:292)
at invokeGuardedCallbackAndCatchFirstError (react-dom.development.js?61bb:306)
at executeDispatch (react-dom.development.js?61bb:389)
at executeDispatchesInOrder (react-dom.development.js?61bb:414)
at executeDispatchesAndRelease (react-dom.development.js?61bb:3278)
at executeDispatchesAndReleaseTopLevel (react-dom.development.js?61bb:3287)
at Array.forEach (<anonymous>)
handleChange @ user-form.js?c7a5:69
callCallback @ react-dom.development.js?61bb:188
invokeGuardedCallbackDev @ react-dom.development.js?61bb:237
invokeGuardedCallback @ react-dom.development.js?61bb:292
invokeGuardedCallbackAndCatchFirstError @ react-dom.development.js?61bb:306
executeDispatch @ react-dom.development.js?61bb:389
executeDispatchesInOrder @ react-dom.development.js?61bb:414
executeDispatchesAndRelease @ react-dom.development.js?61bb:3278
executeDispatchesAndReleaseTopLevel @ react-dom.development.js?61bb:3287
forEachAccumulated @ react-dom.development.js?61bb:3257
runEventsInBatch @ react-dom.development.js?61bb:3304
runExtractedPluginEventsInBatch @ react-dom.development.js?61bb:3514
handleTopLevel @ react-dom.development.js?61bb:3558
batchedEventUpdates$1 @ react-dom.development.js?61bb:21871
batchedEventUpdates @ react-dom.development.js?61bb:795
dispatchEventForLegacyPluginEventSystem @ react-dom.development.js?61bb:3568
attemptToDispatchEvent @ react-dom.development.js?61bb:4267
dispatchEvent @ react-dom.development.js?61bb:4189
unstable_runWithPriority @ scheduler.development.js?3069:653
runWithPriority$1 @ react-dom.development.js?61bb:11039
discreteUpdates$1 @ react-dom.development.js?61bb:21887
discreteUpdates @ react-dom.development.js?61bb:806
dispatchDiscreteEvent @ react-dom.development.js?61bb:4168
user form.js?c7a5:69未捕获类型错误:无法读取未定义的
在handleChange(用户表单.js?c7a5:69)
在htmlunknowneelement.callCallback(react dom.development.js?61bb:188)
在Object.invokeGuardedCallbackDev(react dom.development.js?61bb:237)
在invokeGuardedCallback(react dom.development.js?61bb:292)
在invokeGuardedCallbackAndCatchFirstError处(react dom.development.js?61bb:306)
在executeDispatch(react dom.development.js?61bb:389)
在ExecuteDispatchesInoder(react dom.development.js?61bb:414)
在executeDispatchesAndRelease(react dom.development.js?61bb:3278)
在executeDispatchesAndReleaseTopLevel(react dom.development.js?61bb:3287)
at Array.forEach(
感谢您的帮助!JavaScript中的这个
关键字与大多数面向对象语言中的关键字不同:
与其他语言相比,函数的this关键字在JavaScript中的行为稍有不同。严格模式和非严格模式之间也存在一些差异
在大多数情况下,它的值是由函数的调用方式(运行时绑定)决定的。它不能在执行期间通过赋值进行设置,每次调用函数时它可能会有所不同。ES5引入了bind()方法设置函数的this值,而不管如何调用它,ES2015引入了不提供自己的this绑定的箭头函数(它保留封闭词汇上下文的this值)
资料来源:
必须在构造函数中绑定handleChange
方法
constructor(props) {
// ...
this.handleChange = this.handleChange.bind(this)
}
或将handleChange
定义为箭头函数:
handleChange = e => {
// ...
}
谢谢你的回答!这很有效,我可能需要读更多关于“这个”的内容
constructor(props) {
// ...
this.handleChange = this.handleChange.bind(this)
}
handleChange = e => {
// ...
}