首页 > 解决方案 > 为什么'this'本身在函数范围内未定义

问题描述

我有以下代码:

class App extends Component {

  constructor(){
    super()
    //this.buttonOneClick = this.buttonOneClick.bind(this);
  }

  buttonOneClick() {
    const { setTestData } = this.props;

    setTestData("test");
  }

  render() {
    const { testData } = this.props;
    return (
      <div className="App">
        <h1>Test App</h1>
        <div>{testData}</div>
        <button onClick={this.buttonOneClick}>Test</button>
      </div>
    );
  }
}

组件 App 使用 react-redux 的 connect 方法导出,以将setTestData-function 映射到 props(这setTestData就是来自哪里)。

当我设置buttonOneClick()处理程序而不向它提供组件上下文时(请参阅我的代码中的注释行constructor()),我收到以下错误:

无法读取未定义的属性“道具”

我知道不会定义道具,因为处理程序是在不了解道具的全局上下文中执行的,但我如何理解错误意味着它this本身没有定义,这对我来说没有意义。为什么会这样?不应该this总是在任何执行上下文中定义吗?

提前致谢

标签: javascriptreactjs

解决方案


这不应该总是在任何执行上下文中定义吗?

不。

严格模式下没有隐含this值。

"use strict";

function example() {
    alert(this);
}

example();


推荐阅读