react-native componentWillAppear不会触发?

react-native componentWillAppear不会触发?

问题描述:

我有一个主屏幕作为我的堆栈导航器的根。我试图给我的Home.js反应组件添加componentWillAppear函数,但是当我通过按下后退按钮从我的联系人屏幕返回到该屏幕时,它不会触发。react-native componentWillAppear不会触发?

import React, { Component } from 'react'; 
import {StackNavigator} from 'react-navigation'; 
import Contact from './Contact'; 

class Home extends Component { 
    static navigationOptions = {title:'Home'}; 

    componentWillAppear() 
    { 
     console.log('hello'); 
    } 
    render() 
    { 
    return <View></View>; 
    } 
} 

let Router = 
{ 
    Home: {screen: Home}, 
    Contact:{screen:Contact} 
} 

const Navigator = StackNavigator(Router); 
export default Navigator; 

是否有其他事件处理程序,将永远火每次当你从一个堆叠导航的子屏幕返回我的主屏幕变成可见的时间?

+0

这是我相信的预期行为。当您按下屏幕时,前一个屏幕不会取消挂载,因此返回时不会触发前一个屏幕上的任何内容。 – bennygenel

+0

有没有像componentOnFocus()或componentOnVisible()或类似的东西? – John

+1

我不认为有。如果您需要在之前的屏幕上执行某些操作,则可以使用2个选项。首先选择是使用redux或类似的包并且激发一个动作来更新以前的组件道具,或者第二个选项是使用一个自定义的后退按钮来执行类似[这个回答](https://stackoverflow.com/a/46796224/ 2315280)然后'this.props.navigation.goBack()' – bennygenel

按bennygenel评论:

我不觉得有什么。如果您需要在以前的屏幕 上执行某些操作,则可以使用2个选项。第一种选择是使用终极版或 类似的包,并触发一个动作来更新以前的组件 道具或第二个选择是使用自定义的返回按钮,做 类似this answer,然后this.props.navigation.goBack()