J'aimerais rafraîchir les données à l'écran dans une application react native à chaque fois que l'écran apparaît - comme dans une application de type ViewWillAppear
méthode. J'ai essayé d'utiliser la méthode componentWillMount
mais il semble qu'elle se déclenche une fois avant d'apparaître, et qu'elle ne se déclenche pas à nouveau lorsque l'on navigue à nouveau vers la vue.
Voici un exemple https://reactnavigation.org/docs/guides/screen-tracking il semble que je puisse ajouter un écouteur sur la page onNavigationStateChange
dans le navigateur racine, mais j'aimerais conserver la logique dans l'écran, car il est difficile de s'y retrouver si je déplace la logique de récupération des données pour cet écran à l'extérieur du navigateur racine.
J'ai essayé de suivre l'exemple et de définir cette méthode dans ma stacknavigation, mais elle ne semble pas se déclencher.
<RootNavigation ref={nav => { this.navigator = nav; }}
onNavigationStateChange={(prevState, currentState, action) => {
// maybe here I can fire redux event or something to let screens
// know that they are getting focus - however it doesn't fire so
// I might be implementing this incorrectly
const currentScreen = getCurrentRouteName(currentState);
const prevScreen = getCurrentRouteName(prevState);
if (prevScreen !== currentScreen) {
console.log('navigating to this screen', currentScreen);
}
}}
/>