這里主要介紹兩種返回模式,一種是導航欄中的返回按鈕,一種是監聽android手機的返回鍵。這兩種無論是哪種返回方式都需要使用
Navigator。
this.props.nav.pop();
1、監聽android原生的返回鍵:BackAndroid
BackAndroid.addEventListener('hardwareBackPress', ()=> {
this.props.nav.pop(); // 返回上一頁
return true;
});
2、點擊導航欄中的返回按鈕返回。
在這里我將導航欄包裝成了一個組件,所以在調用導航欄組件時需將 Navigator 傳遞過去:
圖片.png
子組件導航欄中的返回鍵點擊事件觸發返回到上一頁:
圖片.png
像上面的一種返回方法,即監聽android的返回鍵進行返回,我們如果在每一個字頁面中都寫這么一段代碼著實過于冗余,所以我們可以去建一個 BaseComponent,在BaseComponent中 extents React.Component , 并在里面寫上對于android返回鍵的監聽,這樣,需要監聽返回鍵的子頁面就可以 extends BaseComponent。
實現代碼如下:
BaseComponent.js
import React, { Component } from 'react';
import { BackAndroid } from 'react-native';
class BaseComponent extends Component {
constructor(props) {
super(props);
BackAndroid.addEventListener('hardwareBackPress', ()=> {
this.props.nav.pop();
return true;
});
}
}
module.exports = BaseComponent; // 這里需用這種方法,否則會報 super 的錯
使用的時候先將其導進來:
import BaseComponent from '../../base/BackComponent';
export default class MapView extends BaseComponent {
constructor(props) {
super(props);
}
}