Я делаю новую всплывающую систему в своем веб-приложении.Я хотел бы сделать 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 я получаю сообщение об ошибке "это неопределено".
Как с этим бороться?