为什么我们不需要在React中绑定箭头功能?

pra*_*kar 7 reactjs arrow-functions

我们都知道我们需要在React中绑定函数以使其起作用。我知道为什么我们需要绑定它。

但是我不确定为什么我们不需要绑定箭头功能。

示例:使用箭头功能(无需绑定)

handleClick = () => {
  this.setState({
    isToggleOn: !this.state.isToggleOn
  });
Run Code Online (Sandbox Code Playgroud)

};

现在,使用功能(需要绑定)

this.handleClick = this.handleClick.bind(this);

handleClick() {
  this.setState({
    isToggleOn: !this.state.isToggleOn
  });
Run Code Online (Sandbox Code Playgroud)

};

我不是在问为什么我们需要绑定功能。我只想知道为什么箭头功能不需要绑定。

谢谢。

Tar*_*sam 7

仅仅因为arrow函数的上下文中没有以下内容:

  • 这个
  • 论点
  • 新目标

所以,当你引用此箭头功能里面把作为其他任何变量,看其在其范围内声明第一,它不能找到它,所以它搜索上的范围也就是指的是反应组件类是什么是必需的,因此我们无需将此this绑定到类。


Mic*_*ade 5

引用MDN

箭头函数表达式比函数表达式更短的语法,没有自己的thisargumentssuper,或 new.target。这些函数表达式最适合于非方法函数,因此不能用作构造函数。

进一步,

在使用箭头函数之前,每个新函数都定义了自己的this值(根据函数的调用方式,在构造函数中为新对象,在严格模式下函数未定义,如果该函数称为“对象方法”,则为基础对象)等)。事实证明,使用面向对象的编程风格并不理想。

因此,基本上,我们不需要绑定的原因是因为this在arrow函数的上下文中不存在。因此,它将上升到下一个级别并使用在this那里找到的内容。