// J'utilise le code ci-dessous pour naviguer d'un écran vers un autre, c'est-à-dire la page d'accueil. Mais lorsque je navigue sur la page d'accueil, je dois actualiser la page ..reload. Dans le courant, quand je viens à l'écran d'accueil, la méthode du cycle de vie n'est pas appelée. Surtout le composant UserAvatar que je dois actualiser ou rappeler. Veuillez suggérer
export default class App extends React.Component { constructor(props) { super(props); this.state = { title: 'Hello!', hasFooterPermission: false }; console.log("Valuueeeeeee"); } async componentDidMount() { const homeFooter = await hasPermission('clm.360D.fe.restrictedView.allowed'); this.setState({ hasFooterPermission: homeFooter }) } onSearchClick = () => { this.props.navigation.navigate('SubscriberSearch'); }; componentWillMount(){ console.log(" Home page dataaaa"); } render() { return ( <View> <ImageBackground source={BG} style={{ width: '100%', height: '100%' }} resizeMode="cover"> <View style={{ paddingTop: 5 , alignContent:'space-between',flexDirection:'row'}}> <View style={{alignSelf: 'flex-start', flex:1}}> <UserAvatar navigationProps={this.props.navigation} avatarSize={40} isTouchable={true}/> </View> {/* <View style={{alignSelf: 'flex-end'}}> <Icon name="bell-outline" type="MaterialCommunityIcons" style={{ color: '#FFFFFF' }} onPress={() => Toastr.showToast('No new notifications!', 3000)} /> </View> */} </View>
// Ci-dessous la page d'accueil
<View style={{textTransform: 'lowercase'}}><YellowBtn label="Go to Dashboard" OnClick={this._redirectCustomerView}/></View> _redirectCustomerView = () => { this.props.navigation.navigate('UserHome'); };
3 Réponses :
Il n'est pas du devoir de la page d'accueil de savoir si vous devez actualiser la page. L'approche suggérée est que lorsque la condition de rechargement est remplie (mise à jour de l'avatar, modifications des propriétés de l'utilisateur, etc.), l'entité appelante doit aller sur la page d'accueil et si nécessaire demander un rechargement (c'est-à-dire window.location.reload ( vrai)
)
Si vous ajoutez un écouteur sur la page d'accueil via l'accessoire de navigation, vous pouvez appeler une fonction lorsqu'une transition vers ou depuis la page d'accueil est sur le point de se produire ('willFocus' / 'willBlur') ou si elle s'est terminée ( 'didFocus' / 'didBlur'). Cela a fonctionné pour moi:
componentDidMount(){ this.props.navigation.addListener('willFocus',this.load) } load = () => { //whatever you want to do when the page loads }
Documentation ici: https : //reactnavigation.org/docs/en/navigation-prop.html
utilisez push au lieu de naviguer
this.props.navigation.push('UserHome');