Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么ReactJS组件handleChange方法出现setState undefined错误?_Reactjs_Axios_Setstate_React Dom_Reactstrap - Fatal编程技术网

为什么ReactJS组件handleChange方法出现setState undefined错误?

为什么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

下面是一个简单的用户配置文件页面ReactJS+Reactstrap+Axios

在handleChange方法中使用setState时出错

我试过几种方法来设置状态,但什么也做不了。这可能是一个更深层次的问题。。。或者链接到JSON解析和字符串化

表单的显示工作正常

错误堆栈:

 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 => {
  // ...
}