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

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

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

通过反向担任实现

  1. function hijackHOC(WrappedComponent) {  
  2.   return class extends WrappedComponent {  
  3.     render() {  
  4.       const tree = super.render();  
  5.       let newProps = {};  
  6.       if (tree && tree.type === 'input') {  
  7.         newProps = { value: '渲染被挟制了' };  
  8.       }  
  9.       const props = Object.assign({}, tree.props, newProps);  
  10.       const newTree = React.cloneElement(tree, props, tree.props.children);  
  11.       return newTree;  
  12.     }  
  13.   }  

留意上面的声名我用的是加强而不是变动。render函数内现实上是挪用React.creatElement发生的React元素:

固然我们能拿到它,可是我们不能直接修改它内里的属性,我们通过getOwnPropertyDescriptors函数来打印下它的设置项:

可以发明,全部的writable属性均被设置为了false,即全部属性是不行变的。(对这些设置项有疑问,请👇defineProperty)

不能直接修改,我们可以借助cloneElement要领来在原组件的基本上加强一个新组件:

React.cloneElement()克隆并返回一个新的React元素,行使 element 作为出发点。天生的元素将会拥有原始元素props与新props的浅归并。新的子级会替代现有的子级。来自原始元素的 key 和 ref 将会保存。

React.cloneElement() 险些相等于:

  1. <element.type {...element.props} {...props}>{children}</element.type> 

怎样行使HOC

(编辑:湖南网)

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

热点阅读