javascript - 带有多个对象的“this”关键字
问题描述
我知道“this”关键字是指当前/立即对象。在观看 React.js 教程时,我看到讲师使用多个对象的关键字。代码如下所示:
class Counter extends Component {
state = {
count: 0
};
styles = {
fontSize: 10
};
render() {
return (
<div>
<h1 style={this.styles}>Hello</h1>
<span>{this.formatCount()}</span>
</div>
);
}
formatCount() {
const { count } = this.state;
return count === 0 ? "Zero" : count;
}
}
在 formatCount() 中,为什么我们指的是this.state
而不是state.count
?另外,为什么不formatCount()
代替this.formatCount()
?教练一直说this
是指当前的对象,但他this.objectname.properties
每次都在写。这是为什么?我不能只用对象名来区分对象吗?
解决方案
您的教师在课堂上使用公共字段声明。
如果它有助于您的理解,那么没有此功能的等效代码将是:
class Counter extends Component {
constructor() {
this.state = {
count: 0
};
this.styles = {
fontSize: 10
};
}
render() {
return (
<div>
<h1 style={this.styles}>Hello</h1>
<span>{this.formatCount()}</span>
</div>
);
}
formatCount() {
const { count } = this.state;
return count === 0 ? "Zero" : count;
}
}
换句话说,state = {...}
andstyles = {...}
只是在构造方法中声明this.state
和的简写。this.styles
编辑:如果您想更好地理解this
关键字,可以参考另一个问题。
推荐阅读
- zooming - 缩放图片上的 RGB 功能问题
- sql - 如何在多列上选择具有不同的表中的所有列
- javascript - 使用 Google 日历 API 为我的 Node.js 应用程序创建事件时出现“缺少结束时间”错误
- r - 从 R 中的多个列中过滤前 50 个值
- azure-devops - 在 YAML 部署作业中部署后检查应用程序运行状况端点的最佳方法是什么?
- azure - 天蓝色 devops 工件和 npm 存储库问题
- git - 是否有用于“git status”的 Git Hook?
- video - 如何将 5FPS 视频转换为延时摄影?
- swift - 如何通过忽略时区将 UTC 字符串转换为日期?
- c# - 在事件处理程序中绑定 Button.text 属性