在 React Native 中点击按钮时导航到另一个屏幕

Navigating to another Screen when a button is tapped in React Native

我是 React Native 的新手,我想在点击按钮时打开另一个屏幕,我想显示的屏幕已经创建。我使用 TouchableOpacity 作为我的按钮,并在“onPress”道具上使用导航。我的应用程序已经在使用 Stack navigator 和 Tab navigator,所以我已经安装了这些包。

我已经尝试过了,但出现错误“undefined is not an object (evaluating 'navigation.navigate')

请帮忙。

在我显示按钮的屏幕中:

const myWebview = ({ navigation }) => {
  return (
      <View style={styles.buttonContainer}>
        <TouchableOpacity
          style={styles.button}
          onPress={() => navigation.navigate("NewListingScreen")}
        >
          <Text style={{ color: "#ffffff", fontWeight: "bold" }}>
            My Button Title
          </Text>
        </TouchableOpacity>
      </View>
  );
};

在我的标签导航器上(屏幕工作正常):

<Tab.Screen
        name={routes.newListingScreen}
        component={NewListingScreen}
        options={({ navigation }) => ({
          tabBarButton: () => (
            <NewListingButton
              onPress={() => {
                navigation.navigate(routes.newListingScreen);
                dispatch({
                  type: "SET_NEW_LISTING_SCREEN",
                  newListingScreen: true,
                });
              }}
            />
          ),
          tabBarVisible: !user,
        })}
      />

当我使用const navigation = useNavigation();

我收到这个错误:

我的第一个猜测是 navigation 对象本身在 undefined 此处。导航道具在屏幕上是 only available。 -

const myWebview = ({ navigation }) => {

使用 hooks 是将导航对象传递给子组件的更好选择。

import { useNavigation } from '@react-navigation/native';

function NotificationsScreen() {
const navigation = useNavigation(); 
return(
 ...
  <TouchableOpacity
     style={styles.button}
     onPress={() => navigation.navigate('NewListingScreen')}
  >
 ...
);
}