为什么ReactFunction组件的“this”未定义

我在 React 的 Arrow 函数组件中测试了“this”变量。

我期望“这个”值可能是全局变量每当我调用函数组件时。

因为据我所知,箭头函数中的'this'在声明箭头函数时被绑定并且'this'由词法作用域规则确定。

词法范围的结尾是全局范围,所以“this”可能是全局变量。

我想念什么?谢谢你。

export default (props) => {

  console.log(this)

  return (
    <div>react this test</div>
  )
}

回答

React 组件(通常)是在ES6 模块中编写的,这些模块会在严格模式下自动运行(重点是我的):

另请注意,与在标准脚本中定义的脚本部分相比,您可能会从模块内部定义的脚本部分获得不同的行为。这是因为模块自动使用严格模式

- MDN

在严格模式下,如果this未绑定,则默认为undefined,不像在非严格/草率模式下默认为全局对象:

但是,在严格模式下,如果在进入执行上下文时未设置 this 的值,它将保持未定义状态,如下例所示

function f2() {
  'use strict'; // see strict mode
  return this;
}

console.log(f2() === undefined); // true

- MDN

当您使用功能组件时,您不应该需要引用this,而是使用钩子useState()来管理状态。


以上是为什么ReactFunction组件的“this”未定义的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>