Skip to content

Instantly share code, notes, and snippets.

@tol-is
Forked from robertgonzales/App.jsx
Created July 12, 2017 13:01
Show Gist options
  • Save tol-is/fd18448be6c2d1570aa0d3c4b83f035e to your computer and use it in GitHub Desktop.
Save tol-is/fd18448be6c2d1570aa0d3c4b83f035e to your computer and use it in GitHub Desktop.
How to make a custom Prompt (using getUserConfirmation) for React Router v4
// use Prompt like normal... magic happens in getUserConfirmation
class App extends Component {
render () {
return (
<Router getUserConfirmation={getUserConfirmation}>
{...}
<Prompt
when={formIsHalfFilledOut}
message="Are you sure you want to leave?"
/>
</Router>
)
}
}
ReactDOM.render(
<App />,
document.getElementById('root')
)
// default behavior uses window.confirm
const getUserConfirmation = (message, callback) => {
const modal = document.createElement('div')
document.body.appendChild(modal)
const withCleanup = (answer) => {
ReactDOM.unmountComponentAtNode(modal)
document.body.removeChild(modal)
callback(answer)
}
ReactDOM.render(
<UserConfirmation
message={message}
onCancel={() => withCleanup(false)}
onConfirm={() => withCleanup(true)}
/>,
modal
)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment