javascript - 即使遵循 react-navigation 文档,react-navigation 也无法在屏幕之间导航
问题描述
我正在从 react-navigation 关注这个文档来学习,我正在尝试和尝试,但我无法在屏幕之间导航。每次我更改某些内容时,都会弹出一个随机错误。<HomeScreen/>
如果我在 App.js 的根目录中只调用一个屏幕,则 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 is not an object,有时它找不到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;
解决方案
您需要像这样使用 createAppContainer 定义一个 AppContainer(什么是 AppContainers)
const AppContainer = createAppContainer(RootStack);
RootStack 将是您要显示的屏幕列表。像这样使用 createStackNavigator(什么是 createStackNavigator)添加它们,如下所示:
const RootStack = createStackNavigator(
{
Home: HomeScreen,
Details: DetailsScreen,
},
{
initialRouteName: 'Home',
}
);
const AppContainer
并在 App.js 中添加const 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'
推荐阅读
- r - 将 R Markdown 渲染为 HTML 时出现“gregexpr 错误”
- android - 在边框中添加两种颜色(android)?
- angular - Angular 我无法从服务器获取图像
- mariadb - 在 MariaDB 上设置 innodb_tmpdir
- javascript - 在单击事件完成之前执行以下代码
- android - Android - 带有 ImageView、LRUcache 和 ViewHolder 的滞后 ListView
- c - 在 C 中创建井字游戏 - 数组不显示更改,不返回错误消息
- amazon-web-services - DynamoDB 记录大小随时间增加
- php - php错误处理可以成为HTML类的一部分吗
- mysql - 涉及已解决挑战数量的 SQL 问题