React Navigation Global FAB

问题描述 投票:0回答:2

我正在使用react-navigation v5,并以App.js结尾,如下所示:>

const MainStack = createStackNavigator();

export default () => (
  <NavigationNativeContainer>
    <MainStack.Navigator
      screenOptions={{
        header: () => <AppbarHeader />,
      }}
    >
      <MainStack.Screen name="index" component={index} />
      <MainStack.Screen name="alternate" component={alternate} />
    </MainStack.Navigator>
  </NavigationNativeContainer>
);

我想添加一个浮动动作(FAB)按钮,该按钮在indexalternate页面的底部均可见,这将允许用户显示当前省略的模态。现在,我觉得唯一的解决方案是将FAB组件同时放在indexalternate组件中,但这似乎不正确,因为它不应该在页面中重新呈现和转换。它应该浮动在页面过渡上方。我觉得它应该更像是某种形式的全局导航器,但是我不确定该如何与上面显示的现有StackNavigator一起使用。

我期待提供任何解决方案。

我正在使用react-navigation v5并最终获得App.js,例如const MainStack = createStackNavigator();导出默认()=>([]

reactjs react-native react-navigation floating-action-button
2个回答
0
投票

如果您真的希望它是全局的,请将其放在根组件中,而不是放在屏幕中。

const App = () => (
  <>
    <NavigationNativeContainer>
      // ...
    </NavigationNativeContainer>
    <FAB />
  </>
);

0
投票

正如@ satya164所指出的,您可以将FAB放在根组件中。另外,对于access to navigation actions,您可以使用指向导航容器的引用。

const App = () =>{
  const ref = React.useRef(null);

  return (
  <>
    <NavigationNativeContainer ref={ref}>
      // ...
    </NavigationNativeContainer>
    <FAB onPress={() => ref.current && ref.current.navigate('A SCREEN')}/>
  </>
);
© www.soinside.com 2019 - 2024. All rights reserved.