值得指出的是,有时您希望在 render() 中执行密集计算并降低性能。特别是当它涉及从props进行计算时。举个例子
class Person extends React.Component {
constructor(props) {
super(props);
this.state = {
name: props.firstName + props.lastName,
};
}
render() {
return <div> {this.state.name} </div>;
}
}
现在当 props 改变时,状态不会更新,因为构造函数只在组件被挂载时运行。更好的方法是在渲染中进行计算。因此,每当您的组件重新渲染时,它都会重新计算并渲染正确的值。
class Person extends React.Component {
render() {
const myName = this.props.firstName + this.props.lastName;
return <div> {myName} </div>;
}
}
这个版本读起来更清晰:
class Person extends React.Component {
calculateName = () => {
return this.props.firstName + this.props.lastName;
}
render() {
const myName = this.calculateName();
return <div> {myName} </div>;
}
}