首页 > web前端 > js教程 > 为什么 `this.setState` 未定义或者不是我的 React 事件处理程序中的函数?

为什么 `this.setState` 未定义或者不是我的 React 事件处理程序中的函数?

DDD
发布: 2024-12-18 08:27:11
原创
723 人浏览过

Why is `this.setState` undefined or not a function in my React event handler?

在事件处理程序中访问 React 实例(this)

问题:

尝试时在事件处理程序中使用 this.setState 更新 React 状态,您可能会遇到以下错误“无法读取未定义的属性‘setState’”“this.setState 不是函数”。这表明 this 关键字没有引用事件处理程序中的组件实例。

说明:

在 ES6 React 组件中,绑定到组件的函数应该定义在构造函数或使用 this.methodName.bind(this) 在渲染方法中显式绑定。这是因为 JavaScript 箭头函数语法(例如 () =>)创建了一个新的函数作用域,并且不会自动将其绑定到组件。

解决方案:

方法一(绑定构造函数):

constructor(props) {
  super(props);
  this.state = { inputContent: 'startValue' };
  this.changeContent = this.changeContent.bind(this); // Binding here
}
登录后复制

方法 2(渲染中绑定):

render() {
  return (
    <input onChange={this.changeContent.bind(this)} />
  );
}
登录后复制

注意: 使用 React 时。 createClass,所有方法自动绑定到组件上

其他更正:

在代码中,React.refs.someref 应替换为 this.refs.someref 以访问 React 元素引用。此外,sendContent 方法需要使用上述任何一种绑定方法绑定到组件。

以上是为什么 `this.setState` 未定义或者不是我的 React 事件处理程序中的函数?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板