如何解决 React 中 App.js 报错 Uncaught TypeError: Cannot read properties of undefined
在 React 开发过程中,经常会碰到一些报错。这里我们来看一个错误,是在 App.js 中报出来的。错误是这样的:App.js:69 Uncaught TypeError: Cannot read properties of undefined (reading 'setState') at onInputChange (App.js:69:1)
下面是产生错误的完整的代码
// 调用 clarifai api接口
const app = new Clarifai.App({
apiKey : 'a2013154seuiasdfdse94302c5bd'
});
class App extends React.Component {
constructor () {
super();
this.state = {
input : '',
imageUrl : '',
}
}
onInputChange(event) {
this.setState({input: event.target.value})
console.log('setState input' + this.state.input);
}
onButtonSubmit() {
this.setState({imageUrl: this.state.input});
app.models.predict(Clarifai.COLOR_MODEL, this.state.input).then(
function(response) {
console.log(response);
},
function(err) {
// 这里处理错误
}
)
}
render(){
return (
<div className="App">
<Particles className="particles" id="tsparticles" options={particlesOptions} />
<Navigation />
<Logo />
<Rank />
<ImageLinkForm onInputChange={this.onInputChange} onButtonSubmit = {this.onButtonSubmit} />
<FaceRecognition imageUrl = {this.state.imageUrl} />
</div>
);
}
}
export default App;
解决这个问题的方法很少。
至于为什么会出现这种情况是因为在上面的代码中没有使用箭头方式,这里我们有两种解决方式
-
我们需要对处理程序进行绑定。如下所示
constructor() { ...code this.onInputChange = this.onInputChange.bind(this) this.onButtonSubmit = this.onInputChange.bind(this) }
-
将方法改为箭头的方式(ES6 语法)。
onInputChange = (event) => { this.setState({input: event.target.value}) console.log('setState input' + this.state.input); } onButtonSubmit = () => { this.setState({imageUrl: this.state.input}); app.models.predict(Clarifai.COLOR_MODEL, this.state.input).then( function(response) { console.log(response); }, function(err) { // 这里处理错误 } ) }
我们可以选择上面两种方式中的任一种。排除各自的环境因素,都可以解决上面的报错。
相关文章
在 React 中使用 onChange 事件
发布时间:2023/03/08 浏览次数:88 分类:WEB前端
-
onChange 是 React 中最常见的输入事件之一。本文将帮助你了解它的工作原理。
获取 onKeyDown 事件以在 React 中使用 Div
发布时间:2023/03/08 浏览次数:154 分类:WEB前端
-
在 React 中处理事件是构建现代 Web 应用程序的关键。这是处理 div 上的 onKeyDown 事件的方法
从 React 中的子组件访问路由参数
发布时间:2023/03/08 浏览次数:77 分类:WEB前端
-
在本文中,我们将探索 React Router 中的所有基本组件,并展示如何从子组件访问参数。