0

我有一个“节目”屏幕,其中包含节目列表,单击转到节目详细信息页面。在详细信息页面上,它有 3 个选项卡,但如果 feedurl 为空,则隐藏一个。当导航到具有 feedurl 的各种节目然后没有 feedsurl 时,这会引发错误:

Error: A navigator can only contain 'Screen', 'Group' or 'React.Fragment' as its direct children (found ''). To render this component in the navigator, pass it in the 'component' prop to 'Screen'.

我猜你不能有条件标签渲染?

     <ShowTab.Navigator
        screenOptions={{
          tabBarActiveTintColor: 'white',
          tabBarInactiveTintColor: '#4b7894',
          tabBarLabelStyle: {
            fontWeight: '600',
          },
          tabBarIndicatorStyle: {
            backgroundColor: 'white',
            height: 4,
          },
          tabBarStyle: {
            backgroundColor: '#021f2e',
          },
        }}>
        <ShowTab.Screen name="About">
          {() => <ShowInfo show={show} />}
        </ShowTab.Screen>
        <ShowTab.Screen name="Schedule">
          {() => <ShowSchedule show={show} />}
        </ShowTab.Screen>

        {show.feedurl && (
          <ShowTab.Screen name="Podcasts">
            {() => <ShowPodcasts show={show} />}
          </ShowTab.Screen>
        )}
        
      </ShowTab.Navigator>
4

2 回答 2

0

你能试着用这个替换你的 .Screen 代码吗?我从未使用过本机反应或反应导航,但这是我通过一些研究发现的。

    <ShowTab.Screen name="About" children={() => <ShowInfo show={show} />} />
    <ShowTab.Screen name="Schedule" children={() => <ShowSchedule show={show} />} />

    {show.feedurl && (
        <ShowTab.Screen name="Podcasts" children={() => <ShowPodcasts show={show} />} />
    )}
    ```
于 2022-02-04T14:07:28.003 回答
0

我不确定为什么它不起作用,但我将其更改为

{ show.feedurl != '' && (

现在它正在工作,我很想知道为什么它不起作用。

于 2022-02-04T14:29:45.150 回答