javascript - 为什么'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
总是在任何执行上下文中定义吗?
提前致谢
解决方案
这不应该总是在任何执行上下文中定义吗?
不。
严格模式下没有隐含this
值。
"use strict";
function example() {
alert(this);
}
example();
推荐阅读
- python - 从剪贴板读取二进制数据
- html - HTML/CSS 在表格中获取按钮和文本以及其他格式的正确顺序
- vue.js - 如何让 SPA 导航与使用 innerHTML 作为内容的外部框架一起工作
- mysql - 查询返回关于列的错误信息
- java - 如何为 KTable 多对一进行 leftJoin?
- javascript - ReactJs / Typescript:如何扩展状态接口
- phpmyadmin - phpmyadmin “templates/”目录不存在
- python - 弧线中的不同颜色
- android - 视图与带有 ConstrainLayout 的 NestedScrollView 中的另一个视图重叠
- html - 通过单击行展开 tableRow