javascript - React Native 中出现此错误的原因是什么?
问题描述
我是本机反应的新手,我一直在尝试使用 createDrawerNavigator 创建标题和拉出菜单。
运行我的代码时,出现以下错误。
错误:路由“Home”的组件必须是 React 组件。例如:
从'./MyScreen'导入MyScreen;
主页:我的屏幕,}
您还可以使用导航器:
从'./MyNavigator'导入MyNavigator;
主页:我的导航器,
}
这是我的 app.js 文件:
import React from 'react';
import { Button, View, Text } from 'react-native';
import { createAppContainer } from 'react-navigation';
import MyDrawerNavigator from './components/MyDrawerNavigator';
const MyApp = createAppContainer(MyDrawerNavigator);
export default class App extends React.Component {
render() {
return <MyApp />;
}
}
我的 HomeScreen.js 文件
import React from 'react';
import { Text, Button } from 'react-native';
import LogoTitle from './LogoTitle';
class MyHomeScreen extends React.Component {
static navigationOptions = ({ navigation }) => {
return {
headerTitle: <LogoTitle />,
headerLeft: (
<Button
onPress={() => this.props.navigation.navigate('DrawerToggle')}
title={'Menu'}
/>
),
};
};
render() {
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>Home Screen</Text>
</View>
);
}
}
export default MyHomeScreen;
我的 MyDrawerNavigator.js 文件
import React from 'react';
import { Button, Platform, Image, View, Text } from 'react-native';
import { createDrawerNavigator } from 'react-navigation-drawer';
import MyHomeScreen from './HomeScreen';
import DetailsScreen from './DetailScreen';
const MyDrawerNavigator = createDrawerNavigator(
{
Home: MyHomeScreen,
Details: DetailsScreen,
}, {
drawerPosition: 'right',
contentOptions: {
activeTintColor: '#000',
},
});
export default MyDrawerNavigator
解决方案
这里有两个问题:
1)您没有导出MyDrawerNavigator
刚刚添加的内容:
export default MyDrawerNavigator
到你的MyDrawerNavigator.js
文件
2)您没有导出您的HomeScreen
. 您必须为它创建一个单独的文件,就像您对DetailsScreen
.
该HomeScreen.js
文件如下所示:
class MyHomeScreen extends React.Component {
static navigationOptions = ({ navigation }) => {
return {
headerTitle: <LogoTitle />,
headerLeft: (
<Button
onPress={() => this.props.navigation.navigate('DrawerToggle')}
title={'Menu'}
/>
),
};
};
render() {
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>Home Screen</Text>
</View>
);
}
}
您需要在屏幕内添加渲染
推荐阅读
- scala - Spark:如何组合在同一个滑动窗口上执行的多个窗口聚合
- javascript - React JS 缩短属性
- javascript - 在 MongoDB 中从日期中查找数据
- stm32 - ARM v6 编译器启动代码中的断点指令
- extentreports - 添加屏幕截图的黄瓜范围报告 - java.lang.NoClassDefFoundError: gherkin/formatter/Reporter
- javascript - 如何重定向链接以从 Internet Explorer 打开到 Firefox?
- sql - 存储过程仅在某些时候正确运行
- github - 为什么 Github Enterprise 是所有合并提交的提交者?
- javascript - 猫头鹰旋转木马多行
- java - Hibernate 使用起始索引 1 而不是 0 持久化列表