Ich versuche, ein Bestätigungsmodal (mit react-confirm) anzuzeigen, um den Benutzer zu warnen, wenn er versucht, zu einem anderen Abschnitt zu wechseln, damit die im Formular ausgefüllten Informationen verloren gehen.React: shouldComponentUpdate warte auf eine asynchrone Operation
die Bestätigung js funktioniert der Code blockieren, so kann ich dies tun:
shouldComponentUpdate(nextProps, nextState) {
if (confirm('Hay cambios sin guardar, si continua se perderán. ¿Desea continuar?')) {
return true;
} else {
return false;
}
}
Aber wenn ich die Bestätigungsverfahren durch die eine der Bibliothek reagieren-confirm ersetzen kann ich nicht auf das Ergebnis warten von diese asynchrone Operation.
async shouldComponentUpdate(nextProps, nextState) {
const response = await confirm('Hay cambios sin guardar, si continua se perderán. ¿Desea continuar?', { title: "Cambios sin guardar", okLabbel: "Sí", cancelLabel: "No!" })
.then(
() => {
return true;
},
() => {
return false;
}
);
return (response);
}
Wer weiß, wie kann ich diese bekommen?
Warum rufen Sie die Bestätigung nicht an, wenn Benutzer auf den Link/die Schaltfläche zu einem anderen Abschnitt klicken. Im Erfolgsrückruf können Sie den Benutzer in den neuen Bereich umleiten. – Saleel
Weil ich nicht zu jedem Abschnitt verschiedene Routen verwende. Eine Komponente verwaltet das Rendern der Informationen für jeden Abschnitt. Deshalb versuche ich, somethingComponentUpdate zu verwenden. – Marina
Es gibt also eine Zustandsänderung beim Übergang in einen anderen Abschnitt. Sie haben nextProps, nextState-Parameter in sollteComponentUpdate, so können Sie den Status überprüfen und Ja oder Nein entsprechend zurückgeben. – Saleel