React-Navigation-5:同一屏幕中的多个MaterialTopTabNavigator

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

我正在将我的项目从react-navigation-v4升级到react-navigation-v5。我需要在同一屏幕内放置两个顶部条,将屏幕分为两半,但是这样做我会得到以下错误:

错误:已经为此容器注册了另一个导航器。您可能在单个“导航容器”或“屏幕”下有多个导航器。确保每个导航器在单独的“屏幕”容器下。

我搜索了很多东西,我知道我可以嵌套它们,但是如何一起使用它们呢?

这是我的错误代码:

import React from 'react';
import { NavigationContainer } from '@react-navigation/native';
import Page1 from './pages/Page1'
import { createMaterialTopTabNavigator } from '@react-navigation/material-top-tabs';

const TopTab = createMaterialTopTabNavigator();
const BottomTab = createMaterialTopTabNavigator();

const TopTabComponent = () => (
  <TopTab.Navigator>
    <TopTab.Screen name='1' component={Page1} />
    <TopTab.Screen name='2' component={Page1} />
  </TopTab.Navigator>
)

const BottomTabComponent = () => (
  <BottomTab.Navigator>
    <BottomTab.Screen name='3' component={Page1} />
    <BottomTab.Screen name='4' component={Page1} />
  </BottomTab.Navigator>
)


export default class App extends React.Component {
  render() {
    return (
      <NavigationContainer>
        <TopTabComponent />
        <BottomTabComponent />
      </NavigationContainer>
    );
  }
}

任何帮助?

react-native react-navigation react-navigation-v5
1个回答
1
投票

您需要使用react-native-tab-view而不是createMaterialTopTabNavigator。 createMaterialTopTabNavigator本身会包装react-native-tab-view并向其中添加导航逻辑(以便您可以例如导航到包含选项卡的屏幕,然后导航到选项卡之一)。这种添加的逻辑正是打破屏幕的原因,因为您试图同时渲染2个导航器,这在react-navigation中是不允许的。

© www.soinside.com 2019 - 2024. All rights reserved.