NativeRouter — это компонент маршрутизатора,
используемый в приложениях на React Native, предоставляющий возможности
навигации, аналогичные BrowserRouter и
HashRouter в веб-приложениях. Он обеспечивает маршрутизацию
без использования URL браузера, так как в мобильных приложениях
отсутствует стандартная адресная строка. Основное преимущество
заключается в том, что NativeRouter позволяет управлять
состоянием навигации через внутренний стек маршрутов.
Для начала необходимо импортировать NativeRouter из
пакета react-router-native:
import { NativeRouter, Route, Link } from 'react-router-native';
import { View, Text } from 'react-native';
Создание маршрутов осуществляется путем вложения компонентов
Route внутрь NativeRouter:
Здесь:
exact — строгая проверка соответствия пути;path — путь маршрута;component — компонент, который отобразится при
совпадении пути.Link и
навигацияВ React Native нельзя использовать стандартные теги
, поэтому для навигации применяется компонент
Link из react-router-native. Он рендерится как
Touchable элемент:
Перейти в профиль
При нажатии происходит смена маршрута без перезагрузки приложения, что позволяет создавать плавные переходы между экранами.
NativeRouter поддерживает концепцию стека маршрутов. При
навигации новые маршруты добавляются в стек, а возврат осуществляется
через метод history.goBack(). Важно понимать, что React
Router для Native не использует нативные навигационные контроллеры по
умолчанию, поэтому при необходимости интеграции с
react-navigation или аналогами можно использовать
NativeRouter как оболочку для управления логикой
маршрутизации.
SwitchКомпонент Switch позволяет отображать только первый
маршрут, который совпадает с текущим путем:
import { Switch } from 'react-router-native';
Switch предотвращает одновременное отображение
нескольких компонентов при совпадении нескольких путей.
NativeRouter позволяет передавать параметры в пути:
Внутри компонента доступ к параметрам осуществляется через объект
match:
function ProfileScreen({ match }) {
return Профиль пользователя с ID: {match.params.userId} ;
}
Для программного управления маршрутом можно использовать хук
useNavigate или объект history:
import { useNavigate } from 'react-router-native';
function HomeScreen() {
const navigate = useNavigate();
return (
Метод navigate позволяет переходить к маршрутам с
возможностью замены текущего состояния или добавления нового элемента в
стек.
NativeRouter совместим с большинством стандартных
компонентов React Native (View, Text,
ScrollView). Для сложных интерфейсов можно комбинировать
маршруты с табами, Drawer или Stack-компонентами, обеспечивая гибкую
архитектуру навигации без потери управляемости маршрутов.
Вложенные маршруты создаются путем вложения компонентов
Route в другие компоненты:
function ProfileScreen({ match }) {
return (
Профиль пользователя
);
}
Такой подход позволяет строить иерархию маршрутов и создавать модульные экраны с локальной навигацией.
Switch и exact позволяет
минимизировать количество ререндеров.NativeRouter.NativeRouter с react-navigation для
оптимального управления стэком экранов и анимациями переходов.