getUserConfirmation Prompt React Router with History Redirect
up vote
3
down vote
favorite
I'm using createBrowserHistory with getUserConfirmation to handle confirmation user validation when leaving a page where a form state has changed:
import { createBrowserHistory } from 'history';
import store from './store';
import { displayPrompt } from './ui/navigation-prompt/navigationPromptDucks';
export default createBrowserHistory({
getUserConfirmation(message, callback) {
store.dispatch(displayPrompt(message, callback));
},
});
It works well:
When I start editing the form and I try to leave the current page I got the confirmation prompt.
Now, let's say I have a delete button to remove the resource of the form, and when deletion succeed I got a history redirect to the resource list page.
My problem is:
If I start editing the form and finally decide to hit the delete button to remove the resource instead of editing it, the history triggers that the form has changed and will show up the confirm prompt before the history redirection.
I have two choice. First, I can put back the initial form state to avoid the prompt to show up. Second, there is an other way to prevent in some cases the prompt to show up.
What is the best solution? If it's the second one, could you tell me how to do that?
Solution 1 (first choice)
Reset form before history redirection:
const mapDispatchToProps = (dispatch, { user, history, t }) => ({
deleteUser: () => new Promise((resolve, reject) => {
dispatch(newAlertDialog(
t('confirmDeleteUser', { user: user.name }),
t('confirmDeleteTitle'),
() => dispatch(requestDeleteUser(user.id, resolve, reject)),
t('delete'),
))
}).then(() => {
// reset form to avoid prompt user confirmation
dispatch(reset('EditUser'));
history.push('/users');
})
});
reactjs history.js
add a comment |
up vote
3
down vote
favorite
I'm using createBrowserHistory with getUserConfirmation to handle confirmation user validation when leaving a page where a form state has changed:
import { createBrowserHistory } from 'history';
import store from './store';
import { displayPrompt } from './ui/navigation-prompt/navigationPromptDucks';
export default createBrowserHistory({
getUserConfirmation(message, callback) {
store.dispatch(displayPrompt(message, callback));
},
});
It works well:
When I start editing the form and I try to leave the current page I got the confirmation prompt.
Now, let's say I have a delete button to remove the resource of the form, and when deletion succeed I got a history redirect to the resource list page.
My problem is:
If I start editing the form and finally decide to hit the delete button to remove the resource instead of editing it, the history triggers that the form has changed and will show up the confirm prompt before the history redirection.
I have two choice. First, I can put back the initial form state to avoid the prompt to show up. Second, there is an other way to prevent in some cases the prompt to show up.
What is the best solution? If it's the second one, could you tell me how to do that?
Solution 1 (first choice)
Reset form before history redirection:
const mapDispatchToProps = (dispatch, { user, history, t }) => ({
deleteUser: () => new Promise((resolve, reject) => {
dispatch(newAlertDialog(
t('confirmDeleteUser', { user: user.name }),
t('confirmDeleteTitle'),
() => dispatch(requestDeleteUser(user.id, resolve, reject)),
t('delete'),
))
}).then(() => {
// reset form to avoid prompt user confirmation
dispatch(reset('EditUser'));
history.push('/users');
})
});
reactjs history.js
add a comment |
up vote
3
down vote
favorite
up vote
3
down vote
favorite
I'm using createBrowserHistory with getUserConfirmation to handle confirmation user validation when leaving a page where a form state has changed:
import { createBrowserHistory } from 'history';
import store from './store';
import { displayPrompt } from './ui/navigation-prompt/navigationPromptDucks';
export default createBrowserHistory({
getUserConfirmation(message, callback) {
store.dispatch(displayPrompt(message, callback));
},
});
It works well:
When I start editing the form and I try to leave the current page I got the confirmation prompt.
Now, let's say I have a delete button to remove the resource of the form, and when deletion succeed I got a history redirect to the resource list page.
My problem is:
If I start editing the form and finally decide to hit the delete button to remove the resource instead of editing it, the history triggers that the form has changed and will show up the confirm prompt before the history redirection.
I have two choice. First, I can put back the initial form state to avoid the prompt to show up. Second, there is an other way to prevent in some cases the prompt to show up.
What is the best solution? If it's the second one, could you tell me how to do that?
Solution 1 (first choice)
Reset form before history redirection:
const mapDispatchToProps = (dispatch, { user, history, t }) => ({
deleteUser: () => new Promise((resolve, reject) => {
dispatch(newAlertDialog(
t('confirmDeleteUser', { user: user.name }),
t('confirmDeleteTitle'),
() => dispatch(requestDeleteUser(user.id, resolve, reject)),
t('delete'),
))
}).then(() => {
// reset form to avoid prompt user confirmation
dispatch(reset('EditUser'));
history.push('/users');
})
});
reactjs history.js
I'm using createBrowserHistory with getUserConfirmation to handle confirmation user validation when leaving a page where a form state has changed:
import { createBrowserHistory } from 'history';
import store from './store';
import { displayPrompt } from './ui/navigation-prompt/navigationPromptDucks';
export default createBrowserHistory({
getUserConfirmation(message, callback) {
store.dispatch(displayPrompt(message, callback));
},
});
It works well:
When I start editing the form and I try to leave the current page I got the confirmation prompt.
Now, let's say I have a delete button to remove the resource of the form, and when deletion succeed I got a history redirect to the resource list page.
My problem is:
If I start editing the form and finally decide to hit the delete button to remove the resource instead of editing it, the history triggers that the form has changed and will show up the confirm prompt before the history redirection.
I have two choice. First, I can put back the initial form state to avoid the prompt to show up. Second, there is an other way to prevent in some cases the prompt to show up.
What is the best solution? If it's the second one, could you tell me how to do that?
Solution 1 (first choice)
Reset form before history redirection:
const mapDispatchToProps = (dispatch, { user, history, t }) => ({
deleteUser: () => new Promise((resolve, reject) => {
dispatch(newAlertDialog(
t('confirmDeleteUser', { user: user.name }),
t('confirmDeleteTitle'),
() => dispatch(requestDeleteUser(user.id, resolve, reject)),
t('delete'),
))
}).then(() => {
// reset form to avoid prompt user confirmation
dispatch(reset('EditUser'));
history.push('/users');
})
});
reactjs history.js
reactjs history.js
edited 9 hours ago
asked 9 hours ago
louis amoros
7511718
7511718
add a comment |
add a comment |
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53413908%2fgetuserconfirmation-prompt-react-router-with-history-redirect%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown