1. // 第一种高阶组件的方式 它是返回一个构造函数
    2. const MyContainerHOC = (WrappedComponent, options) => class extends React.Component {
    3. render(){
    4. return <WrappedComponent {...options} {...this.props} />;
    5. }
    6. }
    7. // 第一种高阶组件的方式 它是返回一个React.element对象
    8. const MyContainer = (WrappedComponent, options, index) => <WrappedComponent key={index} {...options} />;
    9. class Demo extends React.Component {
    10. render() {
    11. return(<div>111</div>);
    12. }
    13. }
    14. // 请注意第一种高阶组件的方式是返回一个构造函数
    15. const ComponentDom = MyContainerHOC(Demo, {});
    16. class DemoContainer extends React.Component {
    17. render() {
    18. return(<div>
    19. { /*第一种方式*/ }
    20. <ComponentDom />
    21. { /*第二种方式*/ }
    22. {MyContainer(Demo, {})}
    23. </div>);
    24. }
    25. }

    转化为es5以后的代码

    1. import "core-js/modules/es6.object.assign";
    2. import "core-js/modules/es6.object.create";
    3. function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
    4. function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
    5. // 第一种高阶组件的方式 它是返回一个构造函数
    6. var MyContainerHOC = function MyContainerHOC(WrappedComponent, options) {
    7. return (
    8. /*#__PURE__*/
    9. function (_React$Component) {
    10. _inheritsLoose(_class, _React$Component);
    11. function _class() {
    12. return _React$Component.apply(this, arguments) || this;
    13. }
    14. var _proto = _class.prototype;
    15. _proto.render = function render() {
    16. return React.createElement(WrappedComponent, _extends({}, options, this.props));
    17. };
    18. return _class;
    19. }(React.Component)
    20. );
    21. }; // 第一种高阶组件的方式 它是返回一个React.element对象
    22. var MyContainer = function MyContainer(WrappedComponent, options, index) {
    23. return React.createElement(WrappedComponent, _extends({
    24. key: index
    25. }, options));
    26. };
    27. var Demo =
    28. /*#__PURE__*/
    29. function (_React$Component2) {
    30. _inheritsLoose(Demo, _React$Component2);
    31. function Demo() {
    32. return _React$Component2.apply(this, arguments) || this;
    33. }
    34. var _proto2 = Demo.prototype;
    35. _proto2.render = function render() {
    36. return React.createElement("div", null, "111");
    37. };
    38. return Demo;
    39. }(React.Component); // 请注意第一种高阶组件的方式是返回一个构造函数
    40. var ComponentDom = MyContainerHOC(Demo, {});
    41. var DemoContainer =
    42. /*#__PURE__*/
    43. function (_React$Component3) {
    44. _inheritsLoose(DemoContainer, _React$Component3);
    45. function DemoContainer() {
    46. return _React$Component3.apply(this, arguments) || this;
    47. }
    48. var _proto3 = DemoContainer.prototype;
    49. _proto3.render = function render() {
    50. return React.createElement("div", null, React.createElement(ComponentDom, null), MyContainer(Demo, {}));
    51. };
    52. return DemoContainer;
    53. }(React.Component);