这两个类都做同样的事情,但 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 组件)