即使遵循了“反应导航”文档,“反应导航”也无法在屏幕之间导航

时间:2019-11-24 03:23:49

标签: javascript reactjs react-native react-navigation

我正在从“反应导航”中跟踪this文档以进行学习,虽然我正在尝试并尝试尝试,但是无法在屏幕之间进行导航。每次我更改某些内容时,都会弹出一个随机错误。如果我仅在App.js根目录内以<HomeScreen/>的形式调用一个屏幕,则App.js可以正常运行。

我这样拨打HomeScreen:

import React from 'react';
import { StyleSheet, Text, View } from 'react-native';
import HomeScreen from './Comps/HomeScreen';
import { StackNavigator } from 'react-navigation';
import DetailsScreen from './Comps/DetailsScreen';

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



const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
  },
});

export default App;

现在一切正常,显示HomeScreen.js

中的内容
 import React from 'react';
 import { StyleSheet, Text, View, SafeAreaView, Button } from 'react-native';
 import { createDrawerNavigator } from 'react-navigation-drawer';
 import { createAppContainer, navigation } from 'react-navigation';
 import { createStackNavigator } from 'react-navigation-stack';

 class HomeScreen extends React.Component {
     render() {
       return (
         <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
           <Text>Home Screen</Text>
           <Button
             title="Go to Details"
             onPress={() => this.props.navigation.navigate('Details')}
           />
         </View>
       );
     }
   }

 export default HomeScreen;

但是当我单击按钮时,会弹出一个随机的 错误 ,有时它表示undefined不是对象,有时找不到StackNavigator ,有时导航存在问题。我安装了所有依赖项,但仍然请告诉我我是否在这里缺少任何内容。

我从HomeScreen.js呼叫DetailsScreen.js,就像文档中所说的那样。

 import React from 'react';
 import { StyleSheet, Text, View, SafeAreaView, Button } from 'react-native';
 import { createDrawerNavigator } from 'react-navigation-drawer';
 import { createAppContainer, navigation } from 'react-navigation';
 import { createStackNavigator } from 'react-navigation-stack';
 import { withNavigation } from 'react-navigation';


 class DetailsScreen extends React.Component {
     render() {
         return (
             <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
                 <Text>Details Screen</Text>
                 <Button
                     title="Go to Details... again"
                     onPress={() => this.props.navigation.navigate('Details')}
                 />
             </View>
         );
     }
 }
 export default DetailsScreen;

1 个答案:

答案 0 :(得分:3)

您需要像这样使用createAppContainer定义一个AppContainer(What is AppContainers

const AppContainer = createAppContainer(RootStack);

,然后RootStack将是您要显示的屏幕列表。使用createStackNavigator(what is createStackNavigator)像这样添加它们:

const RootStack = createStackNavigator(
  {
    Home: HomeScreen,
    Details: DetailsScreen,
  },
  {
    initialRouteName: 'Home',
  }
);

并在App.js中添加const AppContainerconst RootStack,然后像这样导出class App

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

如果屏幕位于其他文件中,请说./Comps/HomeScreen.js./Comps/DetailsScreen.js,然后在创建屏幕之前将它们导入App.js中。像这样:

import HomeScreen from './Comps/HomeScreen';
import DetailsScreen from './Comps/DetailsScreen'