react hoc

import React,{Component} from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import * as serviceWorker from './serviceWorker';


class InputComponent extends Component {
    componentWillReceiveProps(){
    }
    render() {
      return <div>{this.props.name}</div>
    }
}
// function logProps (InputComponent) {
//     InputComponent.prototype.componentWillReceiveProps = function(nextProps){
//         console.log('current props' , this.props)
//         console.log('next props' , nextProps)
//     };
//     //污染原型链,不推荐
//     return InputComponent;
// }
function logProps (WrappedComponent) {
    return class extends Component {
        componentWillReceiveProps(nextProps) {
            console.log('current props' , this.props)
            console.log('next props' , nextProps)
        }
        render() {
            return <WrappedComponent {...this.props} />;
        }
    }
}
const EnhancedComponent = logProps(InputComponent)
let name = 'xxx'
setInterval(()=>{
    name += 'hahaha'
    ReactDOM.render(<EnhancedComponent name={name}/>, document.getElementById('root'));
},2000)

serviceWorker.unregister();

高阶函数对组件的封装,譬如多个组件大部分相同,只是需要局部变化,可通过高阶函数来进行封装处理。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容