Tab.Navigation 中的道具反应导航不起作用

Posted

技术标签:

【中文标题】Tab.Navigation 中的道具反应导航不起作用【英文标题】:Props in Tab.Navigation react navigation not working 【发布时间】:2021-08-17 13:41:46 【问题描述】:

我制作了一个导航组件并将所有屏幕放入其中。 它运行良好,但 Tab.Navigation 中的道具不起作用,例如 barStyle、initialRouteName、.... 我为每个屏幕制作堆栈并将所有堆栈放在底部导航中,我想更改底部导航的选项,但我不能。 我设置了 initialRouteName 和 bar 样式,但现在可以正常工作了。 感谢您的回复。

import NavigationContainer from '@react-navigation/native';
import createBottomTabNavigator from '@react-navigation/bottom-tabs';
import CollectionScreen from '../screens/Collection';
import LiveScreen from '../screens/Live';
import PrayScreen from '../screens/Pray';
import ProfileScreen from '../screens/Profile';
import PublicationScreen from '../screens/Publication';
import React from 'react';
import createNativeStackNavigator from '@react-navigation/native-stack';

const LiveStack = createNativeStackNavigator();

function LiveStackScreen() 
  return (
    <LiveStack.Navigator screenOptions=headerShown: false>
      <LiveStack.Screen name="LiveScreen" component=LiveScreen />
    </LiveStack.Navigator>
  );


const ProfileStack = createNativeStackNavigator();
function ProfileStackScreen() 
  return (
    <ProfileStack.Navigator screenOptions=headerShown: false>
      <ProfileStack.Screen name="ProfileScreen" component=ProfileScreen />
    </ProfileStack.Navigator>
  );


const PrayStack = createNativeStackNavigator();
function PrayStackScreen() 
  return (
    <PrayStack.Navigator screenOptions=headerShown: false>
      <PrayStack.Screen name="PrayScreen" component=PrayScreen />
    </PrayStack.Navigator>
  );


const PublicationStack = createNativeStackNavigator();
function PublicationStackScreen() 
  return (
    <PublicationStack.Navigator screenOptions=headerShown: false>
      <PublicationStack.Screen
        name="PublicationScreen"
        component=PublicationScreen
      />
    </PublicationStack.Navigator>
  );


const CollectionStack = createNativeStackNavigator();
function CollectionStackScreen() 
  return (
    <CollectionStack.Navigator screenOptions=headerShown: false>
      <CollectionStack.Screen
        name="CollectionScreen"
        component=CollectionScreen
      />
    </CollectionStack.Navigator>
  );


const Tab = createBottomTabNavigator();

export default function Navigation() 
  return (
    <NavigationContainer>
      <Tab.Navigator
        // This props not working
        initialRouteName="Profile"
        barStyle=backgroundColor: '#694fad'>
        <Tab.Screen name="Live" component=LiveStackScreen />
        <Tab.Screen name="Profile" component=ProfileStackScreen />
        <Tab.Screen name="Pray" component=PrayStackScreen />
        <Tab.Screen name="Publication" component=PublicationStackScreen />
        <Tab.Screen name="Collection" component=CollectionStackScreen />
      </Tab.Navigator>
    </NavigationContainer>
  );

【问题讨论】:

你能给我们一些代码sn-ps或更多细节吗? @poPaTheGuru 我把 sn-ps 我刚试过initialRouteName,它按预期工作,但barStyle不是道具,你可能想试试tabStyle 【参考方案1】:

我知道为什么这个 sn-ps 不起作用。 我写了如下代码

initialRouteName="Profile"

但是我们必须像下面这样设置initialRouteName

 initialRouteName='Profile'

为了改变bottomTab的背景颜色,你应该像下面这样

 screenOptions=
      headerShown: false,
      tabBarStyle: backgroundColor: 'red',
    

【讨论】:

以上是关于Tab.Navigation 中的道具反应导航不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何在 React Native 中使 Tab.Navigation Screens 默认背景为白色?

在反应导航 <drawerItems> 中传播道具

反应导航:如何在打字稿中使用 NavigationStackScreenComponent 类型传递 redux 道具

反应本机自定义组件道具不起作用

尝试在反应原生的自定义组件中使用两个道具,但它不起作用

当用户输入通过来自另一个组件的道具的文本时,在反应 js 中不起作用