一、介紹
React-navigation 是 React Native 官方提供的一款支持跨平台的導航庫,提供了多種導航器來滿足不同的場景需求,使得開發跨平台應用更加簡單、快速。
React-navigation 內置了許多常見場景的導航器,如:StackNavigator、BottomTabNavigator、DrawerNavigator,同時也支持用戶定製導航器。
二、StackNavigator
StackNavigator 是最基本的 Stack Navigator,提供了界面的跳轉和返回功能。使用 StackNavigator 時,每個需要跳轉的界面都需要在 StackNavigator 中註冊後才能使用。
npm install --save react-navigation
import { StackNavigator } from 'react-navigation';
const App = StackNavigator({
Home: {screen: HomeScreen},
Profile: {screen: ProfileScreen},
});
上述代碼示例中,我們使用 StackNavigator 創建了一個包含兩個頁面的導航。其中 HomeScreen 和 ProfileScreen 分別代表需要導航的兩個頁面。
三、BottomTabNavigator
BottomTabNavigator 是一個底部選項卡欄,提供了多個子頁面的切換功能。使用 BottomTabNavigator 時,每個需要切換的頁面都需要在 BottomTabNavigator 中註冊後才能使用。
npm install --save react-navigation
import { TabNavigator } from 'react-navigation';
const App = TabNavigator({
Home: {screen: HomeScreen},
Profile: {screen: ProfileScreen},
});
上述代碼示例中,我們使用 TabNavigator 創建了一個包含兩個選項卡的導航。其中 HomeScreen 和 ProfileScreen 分別代表需要進行切換的兩個頁面。
四、DrawerNavigator
DrawerNavigator 可以創建一個側邊欄導航,可以上下滑動或者點擊按鈕來打開或關閉側邊欄。使用 DrawerNavigator 時,每個需要跳轉的界面都需要在 DrawerNavigator 中註冊後才能使用。
npm install --save react-navigation
import { DrawerNavigator } from 'react-navigation';
const App = DrawerNavigator({
Home: {screen: HomeScreen},
Profile: {screen: ProfileScreen},
});
上述代碼示例中,我們使用 DrawerNavigator 創建了一個包含兩個界面的側邊欄導航。其中 HomeScreen 和 ProfileScreen 分別代表需要導航的兩個頁面。
五、自定義導航器
當內置的導航器不能滿足我們的需求時,我們可以通過自定義導航器來滿足自己的需求。使用 React-navigation 提供的 StackNavigator、TabNavigator 和 DrawerNavigator,都是基於 react-navigation 中最底層的導航器—Navigator。
我們可以通過創建自定義的 Navigator 來完成自己的業務場景。Navigator 提供了各種跳轉、返回方法,我們可以根據自己的需求來選擇使用。下面給出一個 Navigator 的例子:
import { Navigator } from 'react-native'
import HomeScreen from './HomeScreen';
import ProfileScreen from './ProfileScreen';
const routes = {
Home: {
title: 'Home',
renderScene: () => ,
},
Profile: {
title: 'Profile',
renderScene: () => ,
},
};
const AppComponent = () => {
const renderScene = (route) => {
return route.renderScene();
};
const configureScene = (route) => {
return Navigator.SceneConfigs.PushFromRight;
};
return (
);
};
export default AppComponent;
上述代碼中,我們定義了一個名為 routes 的對象,對象中包含兩個屬性:title 和 renderScene。title 用來描述頁面的標題,renderScene 用來描述頁面內容。最後我們通過 Navigator 將這兩個頁面進行導航。這個例子給出了自定義 Navigator 的雛形,讀者可以自己根據需求進行擴展。
六、總結
React-navigation 提供了一套完整的解決方案,讓開發者更加方便快捷地實現多平台導航。本文主要從 StackNavigator、BottomTabNavigator、DrawerNavigator 和自定義導航器四個方面對 React-navigation 進行了詳細講解。相信讀者在掌握了這些內容之後,會更加容易構建移動應用。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/291798.html