React Navigation: ошибка «Вложенный навигационный контейнер» и приложение зависает на экране загрузкиAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 React Navigation: ошибка «Вложенный навигационный контейнер» и приложение зависает на экране загрузки

Сообщение Anonymous »

Система:
ОС: macOS 15.7.2
ЦП: (24) Arm64 Apple M2 Ultra
Память: 133,40 ГБ / 192,00 ГБ
Оболочка:
версия: «5.9»
путь: /bin/zsh
Двоичные файлы:
Узел:
версия: 18.20.8
путь: /Users/u/.nvm/versions/node/v18.20.8/bin/node
Yarn: не найден
npm:
версия: 10.8.2
путь: /Users/u/.nvm/versions/node/v18.20.8/bin/npm
Watchman:
версия: 2025.11.10.00
путь: /opt/homebrew/bin/watchman
Менеджеры:
CocoaPods:
версия: 1.16.2
путь: /Users/u/.rbenv/shims/pod
SDK:
iOS SDK:
Платформы:
- DriverKit 25.1
- iOS 26.1
- macOS 26.1
- tvOS 26.1
- VisionOS 26.1
- watchOS 26.1
Android SDK: не найден
IDE:
Android Studio: 2025.2 AI-252.25557.131.2521.14432022
Xcode:
версия: 26.1.1/17B100
путь: /usr/bin/xcodebuild
Языки:
Java:
версия: 11.0.29
путь: /opt/homebrew/opt/openjdk@11/bin/javac
Ruby:
версия: 3.3.0
путь: /Users/u/.rbenv/shims/ruby
npmPackages:
"@react-native-community/cli":
установлено: 11.3.8
требуется: последняя
реакция:
установлена: 18.2.0
требуется: 18.2.0
react-native:
установлена: 0.72.6
требуется: 0.72.6
react-native-macos: не найдена
npmGlobalPackages:
"react-native": не найден
Android:
hermesEnabled: true
newArchEnabled: false
iOS:
hermesEnabled: false
newArchEnabled: не найден
Проблема
Мое приложение зависает на экране загрузки. Я получаю ошибки о вложенном навигационном контейнере.
Единственный навигационный контейнер, который я нашел, находился в файле MainScreen.tsx.
Сообщения об ошибках
  • Ошибка вложенного навигационного контейнера:

Код: Выделить всё

Error: Looks like you have nested a 'NavigationContainer' inside another.
Normally you need only one container at the root of the app.
Моя структура кода
App.tsx:

Код: Выделить всё

import React from 'react';
import { NavigationContainer, useLinking } from '@react-navigation/native';
import MainScreen from './screens/MainScreen';

export default function App() {
const ref = React.useRef(null);
const [isReady, setIsReady] = React.useState(false);
const [initialState, setInitialState] = React.useState();

const { getInitialState } = useLinking(ref, {
prefixes: ['myapp://'],
config: {
screens: {
Home: 'home',
},
},
});

React.useEffect(() => {
getInitialState()
.then(state => {
if (state !== undefined) {
setInitialState(state);
}
})
.finally(() => {
setIsReady(true);
});
}, [getInitialState]);

if (!isReady) {
return Loading...;
}

return (



);
}
MainScreen.tsx:

Код: Выделить всё

import React from 'react';
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';

const Stack = createStackNavigator();

export default function MainScreen() {
return (






);
}
HomeScreen.tsx:

Код: Выделить всё

import React from 'react';
import { View, Text } from 'react-native';

export default function HomeScreen() {
return (

Home Screen

);
}
Что я пробовал
  • Удаление NavigationContainer из MainScreen — возникла ошибка «Не удалось зарегистрировать навигатор»
  • Использование ссылки вместо useLinking — все равно зависает при загрузке
  • Обновление пакетов React-Navigation с v5 до v6
Вопросы
  • Как мне структурировать навигацию с помощью React Navigation v6?
  • Должен ли я использовать useLinking или ссылку?
    />
Дополнительный контекст
  • Приложение работало на более старой версии React Native (0.62)
  • Недавно обновлено до RN 0.72


Подробнее здесь: https://stackoverflow.com/questions/798 ... loading-sc
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»