Sagas sont le répertoire lib pour cela - ils regardent pour toute action d'un type spécifié. La navigation prendra deux actions: une pour indiquer que la navigation est sur le point d'arriver (que la saga suivra) et une pour mettre à jour la page actuelle. La saga surveille les actions du premier type et affiche une boîte de dialogue d'avertissement si les données ont changé.
Ex:
function showWarning(action) {
if (/* data has been changed but not saved */) {
displayWarningDialog(action.pageToNavigateTo)
}
else {
// action that updates the page/location
completeNavigation(action.pageToNavigateTo)
}
}
function* mySaga() {
// NAVIGATE_TO_PAGE_X are the actions that get fired when a user changes pages
yield takeEvery("NAVIGATE_TO_PAGE_1", showWarning)
yield takeEvery("NAVIGATE_TO_PAGE_2", showWarning)
}
Mais principalement comment capturer les changements d'état en redux? – Kamaraju