这两个类都做同样的事情,但ClassA似乎是多余的,因为每次声明一个函数时你必须做的绑定,而且由于函数创建类型的不同,ClassB看起来不像ClassA那样干净。
class ClassA extends React.Component {
constructor() {
super();
this.state = { message: "bar" };
this.foo = this.foo.bind();
}
foo() {
console.log(this.state.message);
}
render() {
return <SomeComponent foo={this.foo} />;
}
}
class ClassB extends React.Component {
constructor() {
super();
this.state = { message: "bar" };
}
foo = () => {
console.log(this.state.message);
}
render() {
return <SomeComponent foo={this.foo} />;
}
}
为了摆脱ClassB中的函数创建差异,你可以做类似这样的事情,其中一切都是表达式。
class ClassC extends React.Component {
state = { message: "bar" }
foo = () => {
console.log(this.state.message);
}
render = () => {
return <SomeComponent foo={this.foo} />;
}
}
在这种情况下,函数声明和表达式之间的优缺点是什么?是否存在性能,内存甚至可维护性差异?
编辑:我想今天的标准技术,性能差异不是很明显。我想我真正想要的是这个问题是什么是为类创建函数的最佳实践(特别是React组件)