ReactJS TypeError:无法读取属性“setState”

IT技术 javascript reactjs ecmascript-6
2021-05-05 23:02:35

我是 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
1个回答
YTSearch({key: API_KEY, term: 'nba'}, function(videos) {
  this.setState({ videos });
});

抛出一个错误,因为这里this的回调内部不是指context of React Component函数本身的上下文,因此setState在这里是未定义的。

在第二个例子中

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

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

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