Разрешена только одна ошибка экспорта по умолчанию для каждого модуля в React Native с навигационной панелью

#javascript #react-native #error-handling

#javascript #react-native #обработка ошибок

Вопрос:

Я пытаюсь создать нижнюю панель навигации с помощью React Native со значками, но у меня появляется эта ошибка, только один экспорт по умолчанию разрешен для каждого модуля. Проблема возникает из последней строки экспорт по умолчанию createAppContainer(TabNavigator);

Я попытался сделать это таким образом: экспортировать по умолчанию createAppContainer (TabNavigator) (Home) и удалить экспорт по умолчанию в мой Home.js компонент, но он тоже не работает.

Кто-нибудь знает, что я делаю неправильно. Любая помощь будет приветствоваться!

 import React, {Component} from 'react'
import {Text, View, StyleSheet } from 'react-native';
import {createBottomTabNavigator, createAppContainer } from 'react-navigation';
import {createMaterialBottomTabNavigator} from 'react-navigation-material-bottom-tabs';
import {Icon} from 'react-native-elements';

import Profile from "./Profile";
import Appointment from "./Appointment";



const styles = StyleSheet.create({

   homeText: {
      fontSize: 40,
      
   },

   homeCont: {
      flex: 1,
      justifyContent: "center",
      alignItems: "center"
   }

})

export default class Home extends Component {

   render() {

      return(

         <View style={styles.homeCont}>
            <Text style={styles.homeText}>HOME SCREEN</Text>
            
         </View>
    
     
      )

   }

   

}

const TabNavigator= createMaterialBottomTabNavigator({

   Home: {screen:Home,
          navigationOptions: {
             tabBarLabel: 'Home',
             activeColor: '#ff0000',
             inactiveColor: '#000000',
             barStyle: {backgroundColor: '#67baf6'},
             tabBarIcon:() => (
                <View>
                   <Icon name={'home'} size={25} style={{color:'#ff000'}} />
                </View>
             )
          }
   },
   Appointment: {screen:Appointment,
      navigationOptions: {
         tabBarLabel: 'Appointment',
         activeColor: '#ff0000',
         inactiveColor: '#000000',
         barStyle: {backgroundColor: '#67baf6'},
         tabBarIcon:() => (
            <View>
               <Icon name={'calendar'} size={25} style={{color:'#ff000'}} />
            </View>
         )
      }
},

Profile: {screen:Profile,
   navigationOptions: {
      tabBarLabel: 'Profile',
      activeColor: '#ff0000',
      inactiveColor: '#000000',
      barStyle: {backgroundColor: '#67baf6'},
      tabBarIcon:() => (
         <View>
            <Icon name={'person'} size={25} style={{color:'#ff000'}} />
         </View>
      )
   }
}


});

export default createAppContainer(TabNavigator); 

Ответ №1:

Проблема в том, что вы экспортируете домашний компонент `

 export default class Home extends Component {

   render() {

      return(

         <View style={styles.homeCont}>
            <Text style={styles.homeText}>HOME SCREEN</Text>
            
         </View>
    
     
      )

   }

   

}
 

Вместо этого выполните

 function Home () {
      return(
         <View style={styles.homeCont}>
            <Text style={styles.homeText}>HOME SCREEN</Text>
         </View>
     )

}
 

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

1. Отлично! Я удалил экспорт по умолчанию из Home. теперь у меня есть эта ошибка: этот навигатор имеет как навигационные, так и контейнерные реквизиты, поэтому неясно, должен ли он владеть своим собственным состоянием. Удалите реквизит: «маршрут», если навигатор должен получить свое состояние из навигационного реквизита. Если навигатор должен поддерживать свое собственное состояние, не передавайте навигацию, которую я не понимаю, кажется, все в порядке, я не вижу, где ошибка