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;
是否有其他事件處理程序,將永遠火每次當你從一個堆疊導航的子屏幕返回我的主屏幕變成可見的時間?
這是我相信的預期行爲。當您按下屏幕時,前一個屏幕不會取消掛載,因此返回時不會觸發前一個屏幕上的任何內容。 – bennygenel
有沒有像componentOnFocus()或componentOnVisible()或類似的東西? – John
我不認爲有。如果您需要在之前的屏幕上執行某些操作,則可以使用2個選項。首先選擇是使用redux或類似的包並且激發一個動作來更新以前的組件道具,或者第二個選項是使用一個自定義的後退按鈕來執行類似[這個回答](https://stackoverflow.com/a/46796224/ 2315280)然後'this.props.navigation.goBack()' – bennygenel