在不同文件的屏幕之间导航
Navigating between screens in different files
我 运行 遇到了在不同文件的屏幕之间导航的问题;我假设这是由于不正确地将功能组件从一个文件导出到另一个文件造成的。我为它创建了一个小吃:https://snack.expo.dev/@figbar/exportingbetweenscreens,并将代码粘贴在下面。本质上,如果 'DetailsScreen' 在 app.js 中,该项目将成为示例导航项目,并且可以正常工作,但是,当它在这个新文件中时,导航到时详细信息屏幕是空白的。
App.js:
import * as React from 'react';
import { Button, View, Text } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';
import {DetailsScreen} from './other';
function HomeScreen({ navigation }) {
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>Home Screen</Text>
<Button
title="Go to Details"
onPress={() => navigation.navigate('Details')}
/>
</View>
);
}
const Stack = createStackNavigator();
function App() {
return (
<NavigationContainer>
<Stack.Navigator initialRouteName="Home">
<Stack.Screen name="Home" component={HomeScreen} />
<Stack.Screen name="Details" component={DetailsScreen} />
</Stack.Navigator>
</NavigationContainer>
);
}
export default App;
other.js:
import * as React from 'react';
import { Button, View, Text } from 'react-native';
function DetailsScreen() {
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>Details Screen</Text>
</View>
);
}
export default DetailsScreen;
DetailsScreen 是默认导出的,所以应该这样导入:
import DetailsScreen from './other';
而不是这个:
import {DetailsScreen} from './other';
去掉花括号,你就可以开始了。或者,不要将 DetailsScreen 导出为默认
我 运行 遇到了在不同文件的屏幕之间导航的问题;我假设这是由于不正确地将功能组件从一个文件导出到另一个文件造成的。我为它创建了一个小吃:https://snack.expo.dev/@figbar/exportingbetweenscreens,并将代码粘贴在下面。本质上,如果 'DetailsScreen' 在 app.js 中,该项目将成为示例导航项目,并且可以正常工作,但是,当它在这个新文件中时,导航到时详细信息屏幕是空白的。
App.js:
import * as React from 'react';
import { Button, View, Text } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import { createStackNavigator } from '@react-navigation/stack';
import {DetailsScreen} from './other';
function HomeScreen({ navigation }) {
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>Home Screen</Text>
<Button
title="Go to Details"
onPress={() => navigation.navigate('Details')}
/>
</View>
);
}
const Stack = createStackNavigator();
function App() {
return (
<NavigationContainer>
<Stack.Navigator initialRouteName="Home">
<Stack.Screen name="Home" component={HomeScreen} />
<Stack.Screen name="Details" component={DetailsScreen} />
</Stack.Navigator>
</NavigationContainer>
);
}
export default App;
other.js:
import * as React from 'react';
import { Button, View, Text } from 'react-native';
function DetailsScreen() {
return (
<View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
<Text>Details Screen</Text>
</View>
);
}
export default DetailsScreen;
DetailsScreen 是默认导出的,所以应该这样导入:
import DetailsScreen from './other';
而不是这个:
import {DetailsScreen} from './other';
去掉花括号,你就可以开始了。或者,不要将 DetailsScreen 导出为默认