【问题标题】:How to avoid overriding 'title' of the header in TabNavigator and its children screens? (react-navigation)如何避免覆盖 TabNavigator 及其子屏幕中标题的“标题”? (反应导航)
【发布时间】:2018-02-25 13:33:11
【问题描述】:

我想用一个按钮将 TabNavigator 的标题设置为“样式书”。

但是,作为 TabNavigator 子级的屏幕会更改“标题”。我认为它覆盖了“标题”道具。如何避免?

这是 TabNavigator(我的 TabBar 在 StackNavigator 中)

export default TabNavigator(
 {
   Category: {
     screen: StylebookCategoryScreen
   },
   All: {
     screen: StylebookAllScreen
   }
 } ,{
  navigationOptions: ({ navigation }) => ({
    title: 'Stylebook',
    headerRight: (
      <Button onPress={() => navigation.navigate('Wardrobe')}
        title="Wardrobe"
      />
    )
 })
});

StylebookAllScreen 与 StylebookCategoryScreen 几乎相同。

class StylebookAllScreen extends Component {
  static navigationOptions = {
   title:'All'
  }

  render() {
    return (
      <View>
        <Text>StylebookALLScreen</Text>
        <Text>StylebookALLScreen</Text>
      </View>
    )
  }
}

export default StylebookAllScreen;

如果我能解决这个问题,我还可以更改导航器的整个结构。

谢谢!

【问题讨论】:

  • 我认为如果您从标签屏幕中删除title,这将不会发生。默认情况下,选项卡会使用您在导航器中定义的名称,所以应该没问题。
  • @NimrodArgov 这很接近,但不正确。当我从标签屏幕中删除 title 时,这些标题将更改为“STYLEBOOK”; “所有”->“样式书”,“类别”->“样式书”。
  • 你的层次结构是StackNavigator -&gt; TabNavigator -&gt; Component吗?
  • 它是TabNavigator -&gt; StackNavigator -&gt; TabNavigator -&gt; Component。嗯..很相似

标签: react-native react-navigation


【解决方案1】:

您必须将您的StylebookAllScreen 组件放入StackNavigator,然后将其放入您的TabNavigator。将其放入StackNavigator 允许您设置props 喜欢

navigationOptions: ({navigation}) => ({
      title: "Stylebook",
    }),

使用headerLeftheaderRight,您可以在标题的左侧/右侧添加Component(例如Button

试试这样的:

const StylebookStack = StackNavigator({
    StylebookAllScreen: {
        screen: Map,
        navigationOptions: ({ navigation }) => ({
            title: "Stylebook",
            headerTitleStyle: {
                ....
            },
        }),
    },
});

然后把它放到你的TabNavigator

export default TabNavigator(
 {
   Category: {
     screen: StylebookCategoryScreen
   },
   All: {
     screen: StylebookStack // <--- HERE
   }
 } ,{
  navigationOptions: ({ navigation }) => ({
    title: 'Stylebook',
    headerRight: (
      <Button onPress={() => navigation.navigate('Wardrobe')}
        title="Wardrobe"
      />
    )
 })
});

【讨论】:

猜你喜欢
  • 2020-06-08
  • 2019-09-27
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 2018-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多