I have a form setup with redux-form and basically want to create a scenario where if there\'s content filled in any of the form\'s inputs and you try to navigate away from t
If you're using react-router, then you can tap into routerWillLeave
; see the documentation: https://github.com/ReactTraining/react-router/blob/master/docs/guides/ConfirmingNavigation.md
UPDATE
It's a bit tough to provide an example, this is rough and untested.
import { reduxForm } from 'redux-form';
class Form extends React.Component {
constructor(props) {
super(props);
this.state = {
dirty: false
};
}
componentDidMount() {
this.props.router.setRouteLeaveHook(this.props.route, this.routerWillLeave.bind(this));
}
routerWillLeave(nextLocation) {
const { dirty } = this.state;
if (dirty) {
return 'You have unsaved information, are you sure you want to leave this page?'
}
}
render() {
const { handleSubmit } = this.props;
return (
<form onSubmit={ handleSubmit(this.props.onSubmit) }>
...
</form>
);
}
}
Basically routerWillLeave will fire anytime the user attempts to navigate. When a user makes a change, update the dirty state value to true. The documentation should cover the rest that you need to know (also make sure you're running version 2.4.0+).