import React from "react"; import {connect, type DispatchProp} from "react-redux"; import {Prompt} from "react-router"; import type {State} from "../reducer"; interface OwnProps { message: string; } interface StateProps { isPrevented: boolean; } interface Props extends OwnProps, StateProps, DispatchProp {} class Component extends React.PureComponent { override componentDidUpdate(prevProps: Readonly): void { const {message, isPrevented} = this.props; if (prevProps.isPrevented !== isPrevented) { window.onbeforeunload = isPrevented ? () => message : null; } } override render() { const {isPrevented, message} = this.props; return ; } } const mapStateToProps = (state: State): StateProps => ({isPrevented: state.navigationPrevented}); export const NavigationGuard = connect(mapStateToProps)(Component);