Реагировать на проблему с навигацией при настройке маршрута по умолчанию - PullRequest
0 голосов
/ 02 февраля 2020

Я пытаюсь создать навигацию, в которой у меня возникает проблема при добавлении

{
  initialRouteName: 'Loading',
 }

Когда я использую стекавигатор без initialRouteName, все работает нормально. Я работаю над симуляцией ios (собственный запуск - ios) и уже несколько раз пытался установить pod.

Это приложение. js

import React from 'react';
import Loading from './Loading';
import SignUp from './SignUp';
import Login from './Login';
import Main from './Main';
import { createAppContainer } from 'react-navigation';
import { createStackNavigator } from 'react-navigation-stack';


const AppNavigator = createStackNavigator(
 { 
   Home: Loading,
   Home: SignUp,
   Home: Login,
   Home: Main,
 },
 {
  initialRouteName: 'Loading',
 }
);

export default createAppContainer(AppNavigator);

Это ошибка:

TypeError: undefined is not an object (evaluating 'routeConfigs[initialRouteName].params')

This error is located at:
    in NavigationContainer (at renderApplication.js:40)
    in RCTView (at AppContainer.js:101)
    in RCTView (at AppContainer.js:119)
    in AppContainer (at renderApplication.js:39)

getInitialState
    StackRouter.js:1:2241
getStateForAction
    StackRouter.js:1:4880
NavigationContainer
    index.bundle?platform=ios&dev=true&minify=false:99867:102
renderRoot
    [native code]:0
runRootCallback
    [native code]:0
unstable_runWithPriority
    scheduler.development.js:643:23
failedRoots.forEach$argument_0
    react-refresh-runtime.development.js:201:29
forEach
    [native code]:0
failedRoots.forEach$argument_0
    react-refresh-runtime.development.js:193:24
Refresh.performReactRefresh
    setUpReactRefresh.js:43:6
setTimeout$argument_0
    require.js:609:10
_callTimer
    JSTimers.js:146:14
callTimers
    JSTimers.js:399:17
callFunctionReturnFlushedQueue
    [native code]:0

Вот мой пакет. json

{
  "name": "kowop",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "android": "react-native run-android",
    "ios": "react-native run-ios",
    "start": "react-native start",
    "test": "jest",
    "lint": "eslint ."
  },
  "dependencies": {
    "@react-native-community/masked-view": "^0.1.6",
    "react": "16.9.0",
    "react-native": "0.61.5",
    "react-native-gesture-handler": "^1.5.3",
    "react-native-reanimated": "^1.7.0",
    "react-native-safe-area-context": "^0.6.4",
    "react-native-screens": "^2.0.0-alpha.32",
    "react-navigation": "^4.1.0",
    "react-navigation-stack": "^2.0.16"
  },
  "devDependencies": {
    "@babel/core": "7.8.3",
    "@babel/runtime": "7.8.3",
    "@react-native-community/eslint-config": "0.0.5",
    "babel-jest": "24.9.0",
    "eslint": "6.8.0",
    "jest": "24.9.0",
    "metro-react-native-babel-preset": "0.56.4",
    "react-test-renderer": "16.9.0"
  },
  "jest": {
    "preset": "react-native"
  }
}

Кто-нибудь имеет представление о том, что проблема может быть?

Большое спасибо!

Тим

Ответы [ 3 ]

1 голос
/ 02 февраля 2020

Как я знаю, initialroutename использует индексированное имя, а не псевдоним. В вашем проекте вы должны использовать «Home».

Таким образом, вы должны использовать разные имена между экранами. например,

const AppNavigator = createStackNavigator(
 { 
   loading: Loading,
   signUp: SignUp,
   login: Login,
   main: Main,
 },
 {
  initialRouteName: 'loading',
 }
);

Кроме того, я думаю, что использовать имя «Домой» для четырех экранов - очень плохая идея. Вы должны попробовать использовать другое имя между экранами.

0 голосов
/ 02 февраля 2020

Спасибо, я действительно не имел в виду экран.

0 голосов
/ 02 февраля 2020

Измените это:

 {
  initialRouteName: 'Loading',
 }

На:

 {
  initialRouteName: 'Home',
 }

Ключ экрана должен быть передан initialRouteName как параметр

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...