Навигация между экранами¶
Мобильные приложения редко состоят из одного экрана. Управление представлением и переходом между несколькими экранами обычно осуществляется с помощью так называемого навигатора.
В этом руководстве рассматриваются различные компоненты навигации, доступные в React Native. Если вы только начинаете работать с навигацией, то, скорее всего, захотите использовать React Navigation. React Navigation предоставляет простое навигационное решение с возможностью представления общих шаблонов стековой навигации и навигации с вкладками как на Android, так и на iOS.
Если вы интегрируете React Native в приложение, которое уже управляет навигацией нативно, или ищете альтернативу React Navigation, следующая библиотека обеспечивает нативную навигацию на обеих платформах: react-native-navigation.
React Navigation¶
Решение сообщества для навигации — это отдельная библиотека, которая позволяет разработчикам настраивать экраны приложения с помощью нескольких строк кода.
Установка и настройка¶
Сначала необходимо установить их в свой проект:
1 |
|
Затем установите необходимые зависимости от сверстников. Вам нужно выполнить разные команды в зависимости от того, является ли ваш проект Expo managed проектом или "голым" проектом React Native.
-
Если у вас есть проект под управлением Expo, установите зависимости с помощью
expo
:1
npx expo install react-native-screens react-native-safe-area-context
-
Если у вас "голый" проект React Native, установите зависимости с помощью
npm
:1
npm install react-native-screens react-native-safe-area-context
Для iOS с голым проектом React Native убедитесь, что у вас установлен Cocoapods. Затем установите капсулы для завершения установки:
1 2 3
cd ios pod install cd ..
Примечание
После установки вы можете получить предупреждения, связанные с одноранговыми зависимостями. Обычно они вызваны неправильными диапазонами версий, указанными в некоторых пакетах. Вы можете спокойно игнорировать большинство предупреждений, пока ваше приложение собирается.
Теперь вам нужно обернуть все приложение в NavigationContainer
. Обычно это делается в начальном файле, таком как index.js
или App.js
:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Теперь вы готовы создать и запустить свое приложение на устройстве/симуляторе.
Использование¶
Теперь вы можете создать приложение с главным экраном и экраном профиля:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
В этом примере есть 2 экрана (Home
и Profile
), определенные с помощью компонента Stack.Screen
. Аналогично, вы можете определить столько экранов, сколько захотите.
Вы можете установить такие параметры, как заголовок экрана для каждого экрана, в свойстве options
файла Stack.Screen
.
Каждый экран принимает пропс component
, который является компонентом React. Эти компоненты получают свойство navigation
, которое имеет различные методы для связи с другими экранами. Например, вы можете использовать navigation.navigate
для перехода к экрану Profile
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
Этот навигатор native-stack
использует нативные API: UINavigationController
на iOS и Fragment
на Android, так что навигация, созданная с помощью createNativeStackNavigator
, будет вести себя так же и иметь те же характеристики производительности, что и приложения, созданные на базе этих API.
В React Navigation также есть пакеты для различных видов навигаторов, таких как вкладки и ящики. Вы можете использовать их для реализации различных шаблонов в вашем приложении.
Для полного ознакомления с React Navigation следуйте руководству React Navigation Getting Started Guide.