Не определено не является функцией рядом с _reactNavigation.StackNavigator - PullRequest
0 голосов
/ 31 декабря 2018

Я хочу настроить приложение React Native с side menu и tab menu одновременно.

Я следовал этому учебнику.

Мой код .

Я получаю сообщение об ошибке:

undefined не является функцией (рядом с ... (0, _reactNavigation.TabNavigator) ... ')

Что вы можете увидеть здесь:

enter image description here

Предварительный просмотр некоторых файлов:

App.js

import React from 'react';
import { Drawer } from './src/navigators';

export default class App extends React.Component {
  render() {
    return (
      <Drawer />
    );
  }
}

navigators.js

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

// Navigators
import { DrawerNavigator, StackNavigator, TabNavigator } from 'react-navigation'

// StackNavigator screens
import ItemList from './ItemList'
import Item from './Item'

// TabNavigator screens
import TabA from './TabA'
import TabB from './TabB'
import TabC from './TabC'

// Plain old component
import Plain from './Plain'

export const Stack = StackNavigator({
  ItemList: { screen: ItemList },
  Item: { screen: Item },
}, {
  initialRouteName: 'ItemList',
})

export const Tabs = TabNavigator({
  TabA: { screen: TabA },
  TabB: { screen: TabB },
  TabC: { screen: Stack },
}, {
  order: ['TabA', 'TabB', 'TabC']
})

export const Drawer = DrawerNavigator({
  Stack: { screen: Stack },
  Tabs: { screen: Tabs },
  Plain: { screen: Plain },
})

1 Ответ

0 голосов
/ 31 декабря 2018

Ваш импорт из React Navigation не подходит для используемой версии (3.0.9).Те именованные экспорты были переименованы после v1, что и используется в учебнике, который вы читаете.

Вы импортируете:

import { DrawerNavigator, StackNavigator, TabNavigator } from 'react-navigation';

Когда вам нужно импортировать их как таковые:

import {
    createDrawerNavigator,
    createStackNavigator,
    createBottomTabNavigator,
    createAppContainer,
} from 'react-navigation';

Вам также нужно обернуть свой корневой навигатор, в данном случае навигатор Drawer, в createAppContainer.

Примерно так:

export const Drawer = createAppContainer(
  createDrawerNavigator({
    Stack: { screen: Stack },
    Tabs: { screen: Tabs },
    Plain: { screen: Plain },
  })
);

Если вы хотите быстроисправить, а затем просто зайти в package.json и заменить версию React Navigation с "react-navigation": "^3.0.9" на "react-navigation": "^1.5.2" и Snack будет работать как положено https://snack.expo.io/@chris-bytelion/react-s

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