我试图使用react-navigation ,但当我将每个屏幕的组件移动到多个文件中时,我无法让它工作.我总是会遇到这样的错误:"路由‘Home’的组件必须是React组件".如果我将所有代码移到一个文件中,则不会发生此错误,因此我不确定区别是什么.

这是我的应用程序.js:

import React from 'react';
import { StackNavigator } from 'react-navigation';
import { AppRegistry, StyleSheet, Text, View, TouchableHighlight } from 'react-native';

import { HomeScreen } from './screens/HomeScreen';
import { JoinScreen  from './screens/JoinScreen';
import { HostScreen } from './screens/HostScreen';


const Root = StackNavigator(
  {
    Home: {
      screen: HomeScreen,
    },
    Details: {
      screen: JoinScreen,
    }
  }, 
  {
    initialRouteName: 'Home',
    headerMode: 'none',
  }
);

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

这是我的.屏幕/主屏幕.js

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

export default class HomeScreen extends React.Component {
  render() {
    const { navigate } = this.props.navigation;
    return (
      <View style={styles.container}>
        <Text style={styles.title}>Hello World</Text>
      </View>
    );
  }
}

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

推荐答案

我认为如果你改变这一行:

import { HomeScreen } from './screens/HomeScreen';

致:

import HomeScreen from './screens/HomeScreen';

(即,移除HomeScreen周围的支架)然后它就会工作.因为在HomeScreen组件的源文件中使用了export default,所以在import上不需要destructuring.这是试图访问组件上名为HomeScreen的变量,该变量正在解析为undefined,并导致您看到的错误.

或者,您可以从export default中移除default,保持import不变.我个人更喜欢go 掉大括号,因为代码看起来更干净.

这一行还缺少一个右括号:

import { JoinScreen  from './screens/JoinScreen';

但我认为那是个打字错误;)

React-native相关问答推荐

Appcenter构建失败错误号::EEXIST -文件存在于syserr_fail2_in

react-native useEffect / useFocusEffect / useCallback 没有正确更新

React Native:无法将具有 resizeMode包含的图像定位在父组件的 flex-end

react native调用fetch后如何使用Async Storage在本地保存数据?

使用动画标记时如何优化react 本机 map 性能

无法在 M1 zsh 上运行 adb segmentation fault adb

如何在 React Native 中正确地将组件导入到我的导航器中?

如何在 react native 中以 redux 形式设置隐藏字段?

如何在 react-native 中设置 Onpress On Textinput

由于依赖关系,在 run-android 上构建失败

如何在 React Native 中删除警告

如何在 React Native 中使用断点进行调试

NativeBase + Exponent Header

错误: Unable to determine the current character, it is not a string, number, array, or object in react-native for android

React Native + Jest EMFILE:too many open files error

React Native 元素搜索栏边界线未清除

使用来自另一个页面的 fetch 调用函数返回结果值

xcode 10错误:multiple commands produce

设置 react-native 元素时使用特定的包名称

React Native 构建命令失败:PhaseScriptExecution ... (domain=NSPOSIXErrorDomain, code=2)