2017-11-11 106 views
0

我有一個主屏幕作爲我的堆棧導航器的根。我試圖給我的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

回答

0

按bennygenel評論:

我不覺得有什麼。如果您需要在以前的屏幕 上執行某些操作,則可以使用2個選項。第一種選擇是使用終極版或 類似的包,並觸發一個動作來更新以前的組件 道具或第二個選擇是使用自定義的返回按鈕,做 類似this answer,然後this.props.navigation.goBack()