如何使用 React 导航作为组件

Posted

技术标签:

【中文标题】如何使用 React 导航作为组件【英文标题】:How to use React navigation as a component 【发布时间】:2022-01-19 06:08:47 【问题描述】:

大家好,我想在我的项目中使用 ViewCart 文件作为组件,但它没有显示,不知道为什么?但是当我在我的 App.js 文件中的整个代码上编写它时,它工作正常。请告诉我为什么会这样,并告诉我如何在我的项目中使用 Viewcart 文件作为组件。如果您有任何疑问,请随时提问。

// ViewCart.js

我想在我的 App.js 文件中使用这个文件作为组件

import * as React from 'react';
import  View, Text  from 'react-native';
import  NavigationContainer  from '@react-navigation/native';
import  createNativeStackNavigator  from '@react-navigation/native-stack';

function HomeScreen() 
  return (
    <View >
      <Text>Home Screen</Text>
    </View>
  );


const Stack = createNativeStackNavigator();

function ViewCart() 
  return (
    <NavigationContainer>
      <Stack.Navigator>
        <Stack.Screen name="Home" component=HomeScreen />
      </Stack.Navigator>
    </NavigationContainer>
  );


export default ViewCart;

App.js

import  StatusBar  from "expo-status-bar";
import React from "react";
import  StyleSheet, Text, View  from "react-native";
import ViewCart from "./screens/ViewCart";

function App() 
  return (
    <View style=styles.container>
      <ViewCart />
      /* <StatusBar style="auto" /> */
    </View>
  );

const styles = StyleSheet.create(
  // container: 
  //   flex: 1,
  //   backgroundColor: "#fff",
  //   alignItems: "center",
  //   justifyContent: "center",
  // ,
);

export default App;

 

【问题讨论】:

【参考方案1】:

希望这个解决方案有效。

小鬼点

    NavigationContainer 必须包装所有导航器结构。 NavigationContainer 将被添加到我们应用的根目录中。

只需从ViewCart.js 中删除NavigationContainer 并在App.js 中添加NavigationContainer

您可以阅读官方文档:Click & Read Official Doc

ViewCart.js

import * as React from 'react';
import  View, Text  from 'react-native';
import  createNativeStackNavigator  from '@react-navigation/native- stack';

function HomeScreen() 
  return (
      <View >
        <Text>Home Screen</Text>
      </View>
    );
 

const Stack = createNativeStackNavigator();

function ViewCart() 
  return (
     <>
      <Stack.Navigator>
      <Stack.Screen name="Home" component=HomeScreen />
      </Stack.Navigator>
     </>
  );
 

export default ViewCart;

App.js

import  StatusBar  from "expo-status-bar";
import React from "react";
import  StyleSheet, Text, View  from "react-native";
import  NavigationContainer  from '@react-navigation/native';

import ViewCart from "./ViewCart";

function App() 
  return (
      <NavigationContainer style=styles.container>
        <ViewCart />
        /* <StatusBar style="auto" /> */
      </NavigationContainer>
   );
 

const styles = StyleSheet.create(
 container: 
   flex: 1,
   backgroundColor: "#fff",
   alignItems: "center",
   justifyContent: "center",
 ,
);

export default App;

希望这会奏效:)Demo

【讨论】:

以上是关于如何使用 React 导航作为组件的主要内容,如果未能解决你的问题,请参考以下文章

使用 react-navigation 重构 - 使用分支时如何提升静态导航标题?

如何将我的 React 组件放置在导航栏下方(这样导航栏不会与它重叠)?

如何通过 React Navigation 将导航道具传入功能组件屏幕?

在 Android 上触摸通知时如何导航到特定的 React 组件?

如何修复反应导航从屏幕顶部移动我的组件?

React&Material UI-如何根据路线删除导航按钮/链接?