Передача реквизитов в contentComponent в DrawerNavigator

#javascript #reactjs #react-native #react-navigation

#javascript #reactjs #react-native #реакция-навигация

Вопрос:

родное приложение с react-навигацией. У меня работает навигация, но когда я добавляю contentComponent из CustomNavigationDrawer.js файл, в котором я получаю сообщение об ошибке:


Если я вставлю код из CustomNavigationDrawer.js непосредственно в моем navigation.js это работает, но я хочу, чтобы компонент находился в другом файле, чтобы я мог хранить его отдельно.

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

Структура:

 ├── screens
│   ├── LoginScreen.js
│   ├── index.js
│   └── MainScreen.js
│   └── etc...
├── navigation
│   ├── Navigation.js
├── component
│   ├── CustomNavigationDrawer.js
│   ├── index.js
  

Index.js:

 export { CustomDrawerNavigator } from './CustomDrawerNavigator';
export { CustomHeader } from "./CustomHeader";
  

CustomDrawerNavigator.js:

 import React from "react";
import { View, StyleSheet } from "react-native";
import { DrawerItems } from "react-navigation";

export const CustomDrawerNavigator = (props) => (
  <View style={[styles.container]}>
    <DrawerItems
      activeBackgroundColor={"black"}
      activeTintColor={"white"}
      iconContainerStyle={styles.icons}
      {...props}
    />
  </View>
);

const styles = StyleSheet.create({
  container: {
    flex: 1
  },

  icons: {
    width: 30
  }
});

  

Navigation.js:

 import CustomDrawerNavigator from "../component";
...

const MainNavigator = createDrawerNavigator(
  {
    Main: {
      navigationOptions: {
        drawerIcon: ({ tintColor }) => (
          <Ionicons name="md-home" style={{ color: tintColor }} />
        ),
        drawerLabel: "Main"
      },
      screen: MainScreen
    },

    Login: {
      navigationOptions: {
        drawerIcon: ({ tintColor }) => (
          <Ionicons name="md-settings" style={{ color: tintColor }} />
        ),
        drawerLabel: "Login"
      },
      screen: LoginScreen
    },

    Profile: {
      navigationOptions: {
        drawerIcon: ({ tintColor }) => (
          <Ionicons name="ios-person" style={{ color: tintColor }} />
        ),
        drawerLabel: "Profile"
      },
      screen: ProfileScreen
    }
  },
  {
    contentComponent: props => <CustomDrawerNavigator {...props} />
  }
);

...
  

Кто-нибудь может мне помочь отобразить contentCompenent из другого файла?

Комментарии:

1. Как вы собираетесь получить реквизит в contentComponent.? Я не получаю этого в предложении.

Ответ №1:

 import CustomDrawerNavigator from "../component";
  

В приведенной выше строке ожидается default export для вашего компонента … но ничего не найдено

Извлеките именованный экспорт с помощью этого:

 import { CustomDrawerNavigator } from "../component";
  

Комментарии:

1. Это решило мою проблему. Я знал, что это что-то маленькое, но я не мог видеть это в данный момент. Большое спасибо!

2. Рад, что это помогает! … Удачного кодирования!

3. спасибо, что помогли мне, ребята

Ответ №2:

Я думаю, это потому, что contentComponent ожидает компонент класса, вместо использования react-navigation используйте react-navigation-drawer для импорта createDrawerNavigaor и DrawerNavigatorItems (используйте это вместо DrawerItems)

 import { createDrawerNavigator,DrawerNavigatorItems } from "react-navigation-drawer";