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

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

Сообщение Anonymous »

Окружающая среда
  • React Native: 0,69
  • @react-navigation/native: 5.9.8
  • @react-navigation/stack: 5.14.9
  • @react-navigation/bottom-tabs: 5.11.15
Проблема
Мое приложение зависает на экране загрузки. Я получаю ошибки о вложенных NavigationContainer и ViewPropTypes.
Сообщения об ошибках
  • Ошибка вложенного NavigationContainer:

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

Error: Looks like you have nested a 'NavigationContainer' inside another.
Normally you need only one container at the root of the app.
  • Ошибка ViewPropTypes:

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

Invariant Violation: ViewPropTypes has been removed from React Native.
Migrate to ViewPropTypes exported from 'deprecated-react-native-prop-types'
  • Ошибка свойства:

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

Property 'getInitialState' doesn't exist
Моя структура кода
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 — все равно зависает при загрузке
  • Установка устаревших-реагирующих-native-prop-types — ошибка ViewPropTypes сохраняется
Вопросы
  • Как мне структурировать навигацию с помощью React Navigation 5.9.8?
  • Следует ли использовать useLinking или ссылку?
  • Где должен находиться NavigationContainer?
  • Как исправить ошибку ViewPropTypes?
Дополнительный контекст
  • Приложение работало над более старая версия React Native (0.63)
  • Недавно обновлена до RN 0.69
  • На данный момент необходимо поддерживать React Navigation 5.x (невозможно обновить до v6)


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

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

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

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

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

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