React-Native навигация не отображается?
Я пытался реализовать React-native-навигацию в своем приложении и, похоже, не могу заставить ее работать.
Мой App.js:
import React from 'react';
import Navigator from './src/components/Navigator'
class App extends React.Component {
render() {
return (
<React.Fragment>
<Navigator />
</React.Fragment>
);
}
}
export default App;
и мой Navigator.js
import React, { Component } from 'react';
import { createMaterialBottomTabNavigator } from 'react-navigation-material-bottom-tabs';
import LoginScreen from '../screens/Login';
import HomeScreen from '../screens/Homescreen'
import Icon from 'react-native-vector-icons/Ionicons';
import App from '../../App';
export default Navigator = () => createMaterialBottomTabNavigator(
{
LoginScreen: {
screen: LoginScreen,
navigationOptions: {
tabBarLabel: 'Login',
tabBarIcon: ({ tintColor, focused }) => (
<Icon size={23} name={(focused ? 'ios-home' : 'ios-home-outline')} style={{ color: tintColor }} />
),
}
},
Home: {
screen: HomeScreen,
navigationOptions: {
tabBarLabel: 'Home',
tabBarIcon: ({ tintColor, focused }) => (
<Icon size={23} name={(focused ? 'ios-stats' : 'ios-stats-outline')} style={{ color: tintColor }} />
)
}
},
},
{
shifting: false,
backBehavior: "initialRoute",
initialRouteName: "LoginScreen",
activeColor: 'white',
tabBarColor: 'blue',
inactiveTintColor: 'black',
barStyle: { backgroundColor: 'orange'},
swipeEnabled: true,
}
);
Прямо сейчас приложение загружается и получает доступ к моему App.js. Тем не менее, кажется, что ничего не отображается из моего навигатора. Я знаю, что он находит это, потому что у меня были ошибки пути и такие исправления в нем.
Какой очевидный недостаток я упускаю?
1 ответ
Здесь может быть некоторая путаница между двумя разными проектами. То, что вы пытаетесь реализовать, из React Navigation. React Native Navigation, отдельный проект от Wix, также существует.
Есть несколько несоответствий в вашем импорте, которые заставляют меня подозревать, что импорт терпит неудачу (нет заглавной буквы 'S' в ../screens/Homescreen
нет экрана в ../screens/Login
). И вы должны удалить App
импортировать в Navigator
,
Вот рабочий пример, основанный на некоторых предположениях о том, чего вы пытаетесь достичь. Обратите внимание, что для последней версии react-navigation-material-bottom-tabs
Мне нужно было добавить зависимости:
@react-navigation/core
@react-navigation/native
react-native-paper
react-native-screens
YMMV. Я тестировал с новым, голым react-native init
приложение. Мне также нужно было использовать React Navigation's createAppContainer
,
import React from 'react'
import { createMaterialBottomTabNavigator } from 'react-navigation-material-bottom-tabs'
import { createAppContainer } from '@react-navigation/native'
import Icon from 'react-native-vector-icons/Ionicons'
import LoginScreen from '../screens/LoginScreen'
import HomeScreen from '../screens/HomeScreen'
const Navigator = createMaterialBottomTabNavigator(
{
Login: {
screen: LoginScreen,
navigationOptions: {
tabBarLabel: 'Login',
tabBarIcon: ({ tintColor, focused }) => (
<Icon
size={23}
name={focused ? 'ios-home' : 'ios-home-outline'}
style={{ color: tintColor }}
/>
)
}
},
Home: {
screen: HomeScreen,
navigationOptions: {
tabBarLabel: 'Home',
tabBarIcon: ({ tintColor, focused }) => (
<Icon
size={23}
name={focused ? 'ios-stats' : 'ios-stats-outline'}
style={{ color: tintColor }}
/>
)
}
}
},
{
shifting: false,
backBehavior: 'initialRoute',
initialRouteName: 'Login',
activeColor: 'white',
tabBarColor: 'blue',
inactiveTintColor: 'black',
barStyle: { backgroundColor: 'orange' },
swipeEnabled: true
}
)
export default createAppContainer(Navigator)