【问题标题】:React Navigation drawer doesn't display the title of the current pageReact Navigation 抽屉不显示当前页面的标题
【发布时间】:2020-02-09 18:48:17
【问题描述】:

我创建了 2 个页面,即 Home 和 Profile,并将这两个页面添加到 createDrawerNavigation。然后将此抽屉导航添加到堆栈导航器。现在,当我尝试在当前页面的标题上显示标题时。我做不到。

这是我的代码。

尝试了 DefaultNavigationOptions 并获得了 navigator 的 props 值,但不是这样。

const MenuStack = createDrawerNavigator(
  {
    HomePage: {
      screen: Home
    },
    ProfilePage: {
      screen: Profile
    }
  },
  {
    drawerWidth: Math.round(Dimensions.get("window").width) * 0.75,
    contentOptions: {
      activeTintColor: theme.colors.accent
    }
  }
);

const AppStack = createStackNavigator(
  {
    MenuStack: {
      screen: MenuStack
    }
  },
  {
    defaultNavigationOptions: ({ navigation }) => {
      return {
        headerLeft: (
          <Icon
            style={{ paddingLeft: 10 }}
            onPress={() => navigation.toggleDrawer()}
            name="bars"
            size={30}
          />
        ),
        headerRight: (
          <Icon
            style={{ paddingRight: 10 }}
            onPress={() => navigation.toggleDrawer()}
            name="search"
            size={30}
          />
        ),
        headerTitle: navigation.state.routeName,
        headerStyle: {
          backgroundColor: theme.colors.accent
        }
      };
    }
  }
);


export const createRootNavigator = (signedIn = false) => {
  return createAppContainer(
    createSwitchNavigator(
      {
        SignedIn: {
          screen: AppStack
        },
        SignedOut: {
          screen: WelcomeStack
        },
        SignInAndOut: {
          screen: AuthStack
        }
      },
      {
        initialRouteName: signedIn ? "SignedIn" : "SignedOut"
      }
    )
  );
};

我在 createStackNavigator 中添加了 headerTitle 属性,但我将“menustack”作为每个页面的标题。 应为页眉上的页面标题。

【问题讨论】:

    标签: react-native react-navigation


    【解决方案1】:

    你有两个选择:

    1。在每个屏幕中呈现您自己的标题组件

    您可以在屏幕中呈现一个标题,可以是自定义标题,也可以是来自组件库(例如 react native paper)的标题。

    function Home() {
      return (
        <React.Fragment>
          <MyCustomHeader title="Home" />
          {{ /* screen content */ }}
        </React.Fragment>
      );
    }
    

    2。为每个需要有标题的屏幕创建一个堆栈导航器

    const MenuStack = createDrawerNavigator({
      HomePage: {
        screen: createStackNavigator({ Home })
      },
      ProfilePage: {
        screen: createStackNavigator({ Profile })
      }
    });
    

    请记住,虽然这需要更少的代码,但性能也较低。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多