加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

【React深入】从Mixin到HOC再到Hook

发布时间:2019-04-12 03:57:26 所属栏目:建站 来源:ConardLi
导读:导读 前端成长速率很是之快,页面和组件变得越来越伟大,怎样更好的实近况态逻辑复用一向都是应用措施中重要的一部门,这直接相关着应用措施的质量以及维护的难易水平。 本文先容了React回收的三种实近况态逻辑复用的技能,并说明白他们的实现道理、行使方

将原组件的状态提取到HOC中举办打点,如下面的代码,我们将Input的value提取到HOC中举办打点,使它酿成受控组件,同时不影响它行使onChange要领举办一些其他操纵。基于这种方法,我们可以实现一个简朴的双向绑定,详细请看双向绑定。

通过属性署理实现

  1. function proxyHoc(WrappedComponent) {  
  2.   return class extends Component {  
  3.     constructor(props) {  
  4.       super(props);  
  5.       this.state = { value: '' };  
  6.     }  
  7.     onChange = (event) => {  
  8.       const { onChange } = this.props;  
  9.       this.setState({  
  10.         value: event.target.value,  
  11.       }, () => {  
  12.         if(typeof onChange ==='function'){  
  13.           onChange(event);  
  14.         }  
  15.       })  
  16.     }  
  17.     render() {  
  18.       const newProps = {  
  19.         value: this.state.value,  
  20.         onChange: this.onChange,  
  21.       }  
  22.       return <WrappedComponent {...this.props} {...newProps} />;  
  23.     }  
  24.   }  
  25. }  
  26. class HOC extends Component {  
  27.   render() {  
  28.     return <input {...this.props}></input>  
  29.   }  
  30. }  
  31. export default proxyHoc(HOC); 

操纵state

上面的例子通过属性署理操作HOC的state对原组件举办了必然的加强,但并不能直接节制原组件的state,而通过反向担任,我们可以直接操纵原组件的state。可是并不保举直接修改或添加原组件的state,由于这样有也许和组件内部的操纵组成斗嘴。

通过反向担任实现

  1. function debugHOC(WrappedComponent) {  
  2.   return class extends WrappedComponent {  
  3.     render() {  
  4.       console.log('props', this.props);  
  5.       console.log('state', this.state);  
  6.       return (  
  7.         <div className="debuging">  
  8.           {super.render()}  
  9.         </div>  
  10.       )  
  11.     }  
  12.   }  

上面的HOC在render中将props和state打印出来,可以用作调试阶段,虽然你可以在内里写更多的调试代码。想象一下,只必要在我们想要调试的组件上加上@debug就可以对该组件举办调试,而不必要在每次调试的时辰写许多冗余代码。(假如你还不知道怎么行使HOC,请👇怎样行使HOC)

渲染挟制

高阶组件可以在render函数中做很是多的操纵,从而节制原组件的渲染输出。只要改变了原组件的渲染,我们都将它称之为一种渲染挟制。

现实上,上面的组合渲染和前提渲染都是渲染挟制的一种,通过反向担任,不只可以实现以上两点,还可直接加强由原组件render函数发生的React元素。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读