React中高阶组件如何使用
小编给大家分享一下React中高阶组件如何使用,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!
创新互联-专业网站定制、快速模板网站建设、高性价比丰顺网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式丰顺网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖丰顺地区。费用合理售后完善,10余年实体公司更值得信赖。
Higher-Order Components
HOC 不是React的标准API。
HOC 是一个函数。
HOC 返回一个
Component
。
示例:
const EnhancedComponent = higherOrderComponent(WrappedComponent);
使用场景
代码复用
类似React 0.15版本之前的mixin。
多个组件同用一段代码,或者同样的方法时,可以使用HOC。
示例:
import React, { PureComponent } from 'react'; const Common = (WrapComponent) => { return (); }; const Header = () =>Title
Header; const Footer = () =>Footer; export default class extends PureComponent { render() { return (); } }Header Component
{Common(Header)}
Footer Component
{Common(Footer)}
在线示例
抽象state和更改props
可以通过WrappedComponent包裹的组件公共state抽象出来。
可以通过WrappedComponent包裹的组件传递修改、添加等的props.
示例:
const HOComp = (WrappedComponent) => { return class extends React.Component { constructor(props) { super(props); this.state = {name: ''}; } componentDidMount() { this.setState({name: WrappedComponent.displayName || WrappedComponent.name || 'Component';}); } return} }
渲然劫持
条件渲然。根据props或者state条件返回在渲然的内容。
示例:
const HOComp = (WrappedComponent) => { return class Enhancer extends WrappedComponent { render() { if (this.props.loggedIn) { return super.render() } else { return null } } } }
反向继承
返回的高阶组件类(Enhancer)继承了 WrappedComponent。
示例:
const EnchanceComponent = (WrappedCompopnent) => { return class extends WrappedCompopnent { constructor(props) { super(props); this.state = { error: '' }; } componentDidMount() { /*do something*/ super.componentDidMount(); } render() { if (this.state.error) { return{this.state.error}
; } else { return super.render(); } } } };
看完了这篇文章,相信你对React中高阶组件如何使用有了一定的了解,想了解更多相关知识,欢迎关注创新互联行业资讯频道,感谢各位的阅读!
网页名称:React中高阶组件如何使用
标题链接:http://azwzsj.com/article/pphpse.html