【问题标题】:Passing navigation to component将导航传递给组件
【发布时间】:2021-06-18 12:36:38
【问题描述】:

我正在尝试将导航(使用 React Navigation 5)传递给我的 stackNavigation 中的组件。这是我的代码:

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

const MyStack = new createStackNavigator();

const MyStackNav = () => {

   const navigation = useNavigation();

   return(
      <MyStack.Navigator screenOptions={{ headerShown: false }}>
         <MyStack.Screen name="Comp1" component={Component1} />
         <MyStack.Screen name="Comp2" component={Component2} />
      </MyStack.Navigator>
   );
}

export default MyStackNav;

我试过了,但是出错了:

<MyStack.Screen name="Comp1" component={(navigation) => <Component1 navigation={navigation} />} />

如何将navigation 传递给我的组件,即Component1Component2。顺便说一句,这些是类组件。

【问题讨论】:

    标签: reactjs react-native react-navigation react-navigation-v5 react-navigation-stack


    【解决方案1】:

    您应该从@react-navigation/native 导入NavigationContainerMyStack.Screen 中的每个组件都会收到一个 prop navigation

    来自documentation的示例:

    import { NavigationContainer } from '@react-navigation/native';
    import { createStackNavigator } from '@react-navigation/stack';
    
    const Stack = createStackNavigator();
    
    export default function App() {
      return (
        <NavigationContainer>
          <Stack.Navigator>{/* ... */}</Stack.Navigator>
        </NavigationContainer>
      );
    }
    

    【讨论】:

    • 我的App.js 中有NavigationContainer,所以我已经在使用导航容器,但我没有将导航视为组件中的道具。知道为什么吗?
    • 看看我制作的这个example,注意App.js 中的NavigationContainer 没有包含在View 中。
    • 谢谢佩德罗。我弄清楚了这个问题。我的应用程序的结构很好。与您的示例一样,NavigationContainer 包装了我的导航或其他组件。问题是我没有在我的组件中收到navigation。我的组件中缺少navigation,即我在做const MyComponent = () =&gt;,而不是const MyComponent = ({ navigation }) =&gt;
    猜你喜欢
    • 2022-11-10
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 2019-10-01
    • 2019-08-26
    • 2018-10-24
    • 2020-06-24
    • 1970-01-01
    相关资源
    最近更新 更多