HO C методы потерянного класса - PullRequest
0 голосов
/ 09 марта 2020

Я не использую ReactJS, у меня есть попытка узнать, как работает реагирование, поэтому я пытаюсь воспроизвести его функцию createElement:

const createElement = (type, props = {}, ...children) => {
  children = children.flat();
  if (type.prototype && type.prototype.isClassComponent) {
    const componentInstance = new type(props);
    componentInstance.__vNode = componentInstance.render();

    componentInstance.__vNode.data.hook = {
      create: () => {
        componentInstance.componentDidMount();
      }
    };

    return componentInstance.__vNode;
  }

У меня также есть этот класс компонентов

export class Component {
  constructor(props) {
    this.props = props || {};
  }
  componentDidMount() { }
  render() {}
}

Теперь у меня есть этот HO C с именем injectReducer

export default reducers => WrappedComponent => {

  class InjectReducer extends Component {
    constructor(props) {
      super(props);
      ...
    }

    render() {
      return <WrappedComponent {...this.props} />;
    }
  }

  return InjectReducer;
};

Теперь у меня есть этот класс, к которому будет применяться этот HO C:

class App extends unreact.Component {
  constructor() {}
  render() {}
  componentDidMount() {
    debugger;
  }
}

export default compose(injectReducer(...))(App)

Когда я проверял эту строку кода:

componentInstance.__vNode.data.hook = {
  create: () => {
    componentInstance.componentDidMount();
  }
};

componentInstance однако не имеет statechange и componentDidMount метода.

...