javascript - ReactJS类型错误: Cannot read property 'setState'

标签 javascript reactjs ecmascript-6

我是 ReactJS 的新手,遇到了一些问题。

我还了解了ES6语法,它表示以下代码的含义相同。

1.

YTSearch({key: API_KEY, term: 'nba'}, function(videos) {
  this.setState({ videos });
});

2.

YTSearch({key: API_KEY, term: 'nba'}, (videos) => {
  this.setState({ videos });
});

但是,第一种方法引发了此错误

TypeError: Cannot read property 'setState' of undefined

最佳答案

YTSearch({key: API_KEY, term: 'nba'}, function(videos) {
  this.setState({ videos });
});

抛出错误,因为回调中的 this 并不引用 React 组件的上下文,而是函数本身的上下文,因此 setState 此处未定义。

在第二个示例中

YTSearch({key: API_KEY, term: 'nba'}, (videos) => {
  this.setState({ videos });
});

您正在使用 arrow 函数将该函数绑定(bind)到 react 组件的上下文。另一种方法是使用 bind(this)

YTSearch({key: API_KEY, term: 'nba'}, function(videos) {
  this.setState({ videos });
}.bind(this));

关于javascript - ReactJS类型错误: Cannot read property 'setState' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43100279/

相关文章:

javascript - React 组件和模块导出

javascript - 如何修复 'Objects are not valid as a React child (found: object with keys )'

javascript - 使用 ES6 类语法在 Controller 中分配依赖项

javascript - JavaScript 中的 "symbol"原始数据类型是什么

javascript - 使用 sort() 移动数组开头的对象

javascript - Node js中创建多个child_process

javascript - 如何使用原型(prototype)框架在Javascript中实现面向对象?

reactjs - 将类组件转换为功能组件

javascript - 为什么我的变量在 javascript 中返回未定义?

javascript - 保留 html.dropdownlist 中选定的值