1. 程式人生 > >react-native導航欄react-navigation

react-native導航欄react-navigation

react-native學習交流QQ群:806870562

效果圖


使用

安裝react-navigation這個包,在終端使用如下命令(需要在專案專案中執行):方法1:yarn add react-navigation方法2:npm install --save react-navigation使用1、配置(1)在App.js檔案中的配置匯入標頭檔案:import { createStackNavigator } from 'react-navigation';註冊並初始化路由頁面:const RootStack = createStackNavigator( { // 定義路由頁面 Home: NavigationPage,
homeNext: NavigationPageNext, Details: NavigationPageDetail, }, { // 初始化首頁 initialRouteName: 'Home', });使用路由:export default class App extends React.Component { render() { return <RootStack />; }}(2)在其他被註冊成路由的頁面中配置2、自定義樣式title:標題,不推薦使用(如果設定了這個導航欄和標籤欄的title就會變成一樣的)headerTitle:設定導航欄標題,推薦
header:可以設定一些導航的屬性,隱藏頂部導航欄設定為null headerBackTitle:設定跳轉頁面左側返回箭頭後面的文字,預設是上一個頁面的標題。可以自定義,也可以設定為null headerTruncatedBackTitle:設定當上個頁面標題不符合返回箭頭後的文字時,預設改成"返回" headerRight:設定導航條右側。可以是按鈕或者其他檢視控制元件 headerLeft:設定導航條左側。可以是按鈕或者其他檢視控制元件 headerStyle:設定導航條的樣式。背景色,寬高等 headerTitleStyle:設定導航欄文字樣式 headerBackTitleStyle:設定導航欄‘返回’文字樣式
headerTintColor:設定導航欄顏色 headerPressColorAndroid:安卓獨有的設定顏色紋理,需要安卓版本大於5.0 gesturesEnabled:是否支援滑動返回手勢,iOS預設支援,安卓預設關閉 如:export default class NavigationPage extends React.Component { // 配置導航欄 static navigationOptions = { // 導航欄標題,不推薦 title: 'Home', // 設定導航欄顏色 headerTintColor: "green", // 導航條的樣式,如背景色,寬高等 headerStyle:{ backgroundColor:"#1E90FF", }, // 導航欄文字樣式 headerTitleStyle:{ paddingLeft:20, fontSize:30 }, };}或:export default class NavigationPageNext extends React.Component { constructor(props){ super(props); _this = this; } // 配置導航欄 static navigationOptions = { // 導航欄標題,推薦使用 headerTitle: ( <Button title="homeNext" color="black" onPress={() => alert("點選民航欄標題")}> </Button> ), // 導航欄返回按鈕標題 headerBackTitle:"返回", // 導航條左側,可以是按鈕或者其他檢視控制元件 headerLeft: ( <TouchableOpacity onPress={() =>{ _this.props.navigation.goBack(); }}> <Image style={{marginLeft:20, width:30, height:30}} source={require("../../Resources/leftBack.png")} resizeMode='center'></Image> </TouchableOpacity> ), // 導航條右側。可以是按鈕或者其他檢視控制元件 headerRight: ( <Button title="Info" color="red" onPress={() => { _this.props.navigation.navigate('Details') }}/> ), };}3、轉場,頁面跳轉(1)不帶引數,且過濾歷史// navigae過濾現有導航,即如果已導航到檢視B,再導航時不會導航this.props.navigation.navigate('homeNext')(2)帶引數,且過濾歷史// navigae不過濾現有導航,即如果已導航到檢視B,再導航時繼續導航this.props.navigation.navigate('homeNext', {message:"導航過來了"})(3)不帶引數,且不過濾歷史// push過濾現有導航,即如果已導航到檢視B,再導航時不會導航this.props.navigation.push('homeNext')(4)帶引數,且不過濾歷史// push不過濾現有導航,即如果已導航到檢視B,再導航時繼續導航this.props.navigation.push('homeNext', {message:"導航過來了"})(5)返回this.props.navigation.goBack()或:this.props.navigation.pop()或(根頁面):this.props.navigation.popToTop()4、傳值(1)進入B頁面時,A頁面傳值this.props.navigation.navigate('homeNext', {message:"導航過來了"})或:this.props.navigation.push('homeNext', {message:"導航過來了"})(2)進入B頁面後,接收並使用A頁面傳過來的值<Text>導航欄使用: {this.props.navigation.state.params.message}</Text>