react hoc

2018-10-26  本文已影响0人  郑无穷大
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();

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

上一篇 下一篇

猜你喜欢

热点阅读