頁面跳轉時,報 Undefined is not an Object(evaluating this2.props.navigation.navigate)
出錯原因:在一個頁面組件中調用了另一個組件,而跳轉動作在被調用組件中定義。則會出現:當前呈現頁面的this與跳轉動作發生的this不一致,導致跳轉動作不能被調用。
解決辦法:在當前呈現頁面獲取跳轉動作調用方法,作為參數傳遞給跳轉動作發生組件。
例如:
export default class PayFailedPage extends Component { render() { return ( <View style={{flex:1}}> <View style={{flex:1}}> <PageTop navigate={this.props.navigation.navigate}/></View> </View> ); } }
在跳轉動作發生組件中定義跳轉:
class PageTop extends Component{ render(){ return ( <View> <View> <Button onPress={()=>{ this.props.navigate('Index'); }} style={{flex:1}} title="回到首頁"/> </View> </View> ); } }