import React from 'react'; import type { PortalMethods } from './context'; export type PortalConsumerProps = { hostName: string; manager: PortalMethods; children: React.ReactNode; }; export class PortalConsumer extends React.Component { _key: any; componentDidMount() { if (!this.props.manager) { throw new Error( 'Looks like you forgot to wrap your root component with `PortalHost` component.\n' ); } this._key = this.props.manager.mount( this.props.hostName, this.props.children ); } componentDidUpdate() { this.props.manager.update( this.props.hostName, this._key, this.props.children ); } componentWillUnmount() { this.props.manager.unmount(this.props.hostName, this._key); } render() { return null; } }