We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
我觉得我们在开发中经常忽略掉的一个模式就是所谓的Stateless Functional Component,不过这是我个人最爱的React组件优化模式,没有之一。我喜爱这种模式不仅仅因为它们能够减少大量的模板代码,而且因为它们能够有效地提高组件的性能表现。总而言之,SFC能够让你的应用跑的更快,长的更帅。
如果我们用正统的React组件的写法,可以得出如下代码:
export default class RelatedSearch extends React.Component { constructor(props) { super(props); this._handleClick = this._handleClick.bind(this); } _handleClick(suggestedUrl, event) { event.preventDefault(); this.props.onClick(suggestedUrl); } render() { return ( <section className="related-search-container"> <h1 className="related-search-title">Related Searches:</h1> <Layout x-small={2} small={3} medium={4} padded={true}> {this.props.relatedQueries.map((query, index) => <Link className="related-search-link" onClick={(event) => this._handleClick(query.searchQuery, event)} key={index}> {query.searchText} </Link> )} </Layout> </section> ); } }
而使用SFC模式的话,大概可以省下29%的代码:
const _handleClick(suggestedUrl, onClick, event) => { event.preventDefault(); onClick(suggestedUrl); }; const RelatedSearch = ({ relatedQueries, onClick }) => <section className="related-search-container"> <h1 className="related-search-title">Related Searches:</h1> <Layout x-small={2} small={3} medium={4} padded={true}> {relatedQueries.map((query, index) => <Link className="related-search-link" onClick={(event) => _handleClick(query.searchQuery, onClick, event)} key={index}> {query.searchText} </Link> )} </Layout> </section> export default RelatedSearch;
代码量的减少主要来源两个方面:
没有构造函数(5行) 以Arrow Function的方式替代Render语句(4行) 实际上,SFC最迷人的地方不仅仅是其代码量的减少,还有就是对于可读性的提高。SFC模式本身就是所谓纯组件的一种最佳实践范式,而移除了构造函数并且将_handleClick()这个点击事件回调函数提取出组件外,可以使JSX代码变得更加纯粹。另一个不错的地方就是SFC以Arrow Function的方式来定义了输入的Props变量,即以Object Destructring语法来声明组件所依赖的Props:
const RelatedSearch = ({ relatedQueries, onClick }) =>
这样不仅能够使组件的Props更加清晰明确,还能够避免冗余的this.props表达式,从而使代码的可读性更好。 转载至王下邀月熊_Chevalier
The text was updated successfully, but these errors were encountered:
No branches or pull requests
SFC:Stateless Functional Component
我觉得我们在开发中经常忽略掉的一个模式就是所谓的Stateless Functional Component,不过这是我个人最爱的React组件优化模式,没有之一。我喜爱这种模式不仅仅因为它们能够减少大量的模板代码,而且因为它们能够有效地提高组件的性能表现。总而言之,SFC能够让你的应用跑的更快,长的更帅。
如果我们用正统的React组件的写法,可以得出如下代码:
而使用SFC模式的话,大概可以省下29%的代码:
代码量的减少主要来源两个方面:
没有构造函数(5行)
以Arrow Function的方式替代Render语句(4行)
实际上,SFC最迷人的地方不仅仅是其代码量的减少,还有就是对于可读性的提高。SFC模式本身就是所谓纯组件的一种最佳实践范式,而移除了构造函数并且将_handleClick()这个点击事件回调函数提取出组件外,可以使JSX代码变得更加纯粹。另一个不错的地方就是SFC以Arrow Function的方式来定义了输入的Props变量,即以Object Destructring语法来声明组件所依赖的Props:
const RelatedSearch = ({ relatedQueries, onClick }) =>
这样不仅能够使组件的Props更加清晰明确,还能够避免冗余的this.props表达式,从而使代码的可读性更好。
转载至王下邀月熊_Chevalier
The text was updated successfully, but these errors were encountered: