我有一个使用React native的应用程序,我使用的是React导航(5.2.9).

我堆了一堆.导航器,我有我的屏幕,但我希望页脚组件在外面,所以它在所有屏幕上呈现.问题是,我无法从页脚导航,这是我需要做的,因为页脚有几个按钮,应该会改变屏幕:

const Stack = createStackNavigator();

const App = () => {    
  return (
    <Provider store={store}>
      <NavigationContainer>
        <Header />
        <Stack.Navigator>
          <Stack.Screen
            name="Home"
            component={HomeScreen}
            options={{
            headerShown: false
          }}
          />
          <Stack.Screen
            name="Login"
            component={LoginScreen}
            options={{
            headerShown: false
          }}
          />
        </Stack.Navigator>
        <Footer />
      </NavigationContainer>
    </Provider>
  );
};

如何将导航props 传递给页脚组件?

推荐答案

试试这个:

创建一个名为:RootNavigation的新文件.js

// RootNavigation.js

import * as React from 'react';

export const navigationRef = React.createRef();

export function navigate(name, params) {
  navigationRef.current?.navigate(name, params);
}
// file where you have the navigation

import {navigationRef} from './path/to/RootNavigation';

      <NavigationContainer ref={navigationRef}>
      .....
        <Footer />
      </NavigationContainer>

还有页脚.js应该是这样的:

// Footer.js

import React from 'react';
import {View, Button} from 'react-native';
import * as RootNavigation from './path/to/RootNavigation';

const Footer= () => {
  return (
    <View>
      <Button
        title={'Go to'}
        onPress={() =>
          RootNavigation.navigate('screenName ', {userName: 'Lucy'})
        }
      />
    </View>
  );
};

export default Footer;

有关更多信息,请阅读文档.https://reactnavigation.org/docs/navigating-without-navigation-prop/

React-native相关问答推荐

react 在顶部选项卡导航中传递本机数据

react native调用fetch后如何使用Async Storage在本地保存数据?

使用动画标记时如何优化react 本机 map 性能

React Native:在ScrollView中更改焦点时键盘关闭

如果没有启用远程调试器,React Native 代码将无法工作

在react-native 应用程序中使用中继

从 React-Native 应用程序中的另一个类访问静态变量?

如何判断 React Native 中的 AsyncStorage 中是否存在密钥? getItem() 总是返回一个promise对象

如何在react native应用程序名称中添加空格?

当我导航到react-native 的新页面时,如何强制卸载组件?

从数据源添加/删除列表视图项时为它们设置动画

Console.error:no permission handler detected

如何使用 Expo 在真实的 iOS 设备上运行应用程序?

react-native run-ios 运行失败: Application is unknown to FrontBoard?

如何将 React Native Promise 连接到 Swift

react-native如何禁用android开发模式

React Native 发送短信

在 React-Native 中手动设置 opacity 的 onPress of TouchableOpacity 的音量

React Native:使用百分比时将视图的宽度设置为等于其高度

React Navigation 切换背景 colored颜色 和样式 StackNavigator