import { Component } from 'react'; export interface IBackButtonHandler { onBackButtonPressed: () => boolean; } export interface IBackButtonHandlerProps { registerBackButtonHandler: (handler: IBackButtonHandler) => () => void; } interface IProps extends IBackButtonHandler, IBackButtonHandlerProps {} // a IBackButtonHandler adaptor for stateless functional components export class BackButtonHandler extends Component { private unregisterBackButtonHandler: (() => void) | undefined; constructor(props: IProps) { super(props); } public componentDidMount() { this.unregisterBackButtonHandler = this.props.registerBackButtonHandler( this ); } public componentWillUnmount() { if (this.unregisterBackButtonHandler) { this.unregisterBackButtonHandler(); } } public onBackButtonPressed = () => { return this.props.onBackButtonPressed(); }; public render() { return null; } }