kev*_*guy 4 javascript class function reactjs
我现在正在学习使用Class
语法创建React组件,并注意我现在必须声明这样的方法:
class Foo extends React.Component {
...
bar = () => {
this.setState({ ... })
}
}
Run Code Online (Sandbox Code Playgroud)
而不是像这样:
class Foo extends React.Component {
...
bar() {
this.setState({ ... }) // won't work
}
}
Run Code Online (Sandbox Code Playgroud)
或者我不能用this.setState()
.
任何人都可以解释创建这样的方法与它们与函数原型的关系有何区别?
第一个是依赖于课程领域,虽然他们是第3阶段提案并且很快就会被采纳,但这些领域还不是语言的一部分.该代码在实例上设置一个属性(就像它在构造函数中一样),这是一个箭头函数(因此关闭this
).它相当于:
class Foo extends React.component {
constructor() {
this.bar = () => {
this.setState({ ... })
};
}
}
Run Code Online (Sandbox Code Playgroud)
第二种是方法语法,它在prototype
对象上创建一个属性,用作新实例的原型,并且就其而言是一个"正常"函数this
(例如,this
它内部的内容取决于它的调用方式).
它们在this
处理方面的区别很大:这意味着如果你bar
用作道具,用第一个例子你不必担心this
管理(但是你要为每个实例创建一个新函数); 使用方法语法,您必须担心this
管理(也可能最终创建一个新函数,具体取决于您如何处理它).
归档时间: |
|
查看次数: |
69 次 |
最近记录: |