Реагируйте js: как работать с рендерингом Parent View Controller - PullRequest
0 голосов
/ 26 февраля 2019

Я делаю новую всплывающую систему в своем веб-приложении.Я хотел бы сделать PopUpViewController, и многие другие дочерние элементы PopUpViewController наследуют это (например, LoginPopUpViewController, NoticePopUpViewController)

Но я хочу, чтобы рендеринг происходил в Parent PopUpViewController.

Может выглядеть как ниже.

export class PopUpVCState {
  popUpTitle?: string;
  popUpHeaderImage?: string;
  popUpDescription?: string;
  
  clickOutsideDisabled: boolean;
  showCloseButton: boolean;
  showHeader: boolean;

  popUpViewComponent: new (...args: any[]) => Component<any, any>;
}

export class PopUpVCProps {
  onClosePopUp: () => void
}

class PopUpVC extends Component<PopUpVCProps, PopUpVCState> {
  popUpRef: HTMLElement;

  constructor(props) {
    super(props);

    this.setState({
      clickOutsideDisabled: false,
      showCloseButton: true,
      showHeader: true,
    });

    this.handleClickOutside = this.handleClickOutside.bind(this);
    this.closePopUp = this.closePopUp.bind(this);
  }

 
  ...
  ...
  
  render() {
    const { showHeader, showCloseButton } = this.state;
    const PopUpViewComponent = this.state.popUpViewComponent;
    
    return (
      <div>
        <PopUpViewComponent />
      <div>
    )
  }
}

А дочерний ViewController выглядит следующим образом.

class NoticePopUpVC extends PopUpVC {
  constructor(props) {
    super(props);
    this.setState({
      popUpTitle: "Christmas Event",
      popUpDescription: "lorem blahblah",
      clickOutsideDisabled: true,
      showCloseButton: true,
      showHeader: true,
      popUpViewComponent: NoticePopUpView,
    });
  }
}

Но когда я запускаю такого рода приложение, в PopUpVC я получаю сообщение об ошибке "это неопределено".

Как с этим бороться?

...