获取当前页面标题

时间:2019-07-12 11:55:08

标签: react-native react-navigation expo

我正在制作React Native Expo应用程序,需要您的帮助。 我有结构:

  

main.js => page1.js => page2.js

当我在createStackNavigator中从main.js移到page1.js时,我写了page1.js的标题的标题,但是在page1.js中,我隐藏了page1.js的标题,并且一切正常,但是当我移至page2.js我有3个标题!!!!

其中一个我隐藏在page2.js中,但我不隐藏其他标头,因为1个标头来自main.js,第二个标头来自page1.js,我需要从main.js隐藏该标头,但如果我将其隐藏,则page1.js中将没有标题。 当我从page1.js导航到page2.js时,我想将数据发送到main.js createStackNavigator。我该怎么做? 代码:

// main.js createStackNavigator:

export default createStackNavigator(
  {
    Main: {
      screen: Main,
      navigationOptions: {
        header: null,
      },
    },
    Page1: {
      screen: Page1,
      navigationOptions: ({ navigation }) => ({
        headerTitle: "Page1",
    }),
    },
  },
  {
    initialRouteName: 'Main',
  }
);

// Page1.js createStackNavigator:


export default createStackNavigator(
  {
    Main: {
      screen: Page1,
      navigationOptions: {
        header: null,
      },
    },
    Page2: {
      screen: Page2,
       navigationOptions: ({ navigation }) => ({
        headerTitle: "Text",
    }),
    },
  },
  {
    initialRouteName: 'Main',
  }
);

// Page2:

export default createStackNavigator(
    {
      Main: {
        screen: Page2,
        navigationOptions: {
          header: null,
        },
      },
    },
    {
      initialRouteName: 'Main',
    }
  );

1 个答案:

答案 0 :(得分:0)

您要复制路径名称,Main已使用3次, 另外page1page2都有两条不同的路线,

解决方案是在单独的文件或类似于app.js的

中创建调用createStackNavigator
export default createStackNavigator(
  {
    Main: {
      screen: Main,
      navigationOptions: {
        header: null,
      },
    },
    Page1: {
      screen: Page1,
      navigationOptions: ({ navigation }) => ({
        headerTitle: "Page1",
    }),
    },
    Page2: {
      screen: Page2,
       navigationOptions: ({ navigation }) => ({
        headerTitle: "Text",
    }),
    },
  },
  {
    initialRouteName: 'Main',
  }
);

现在所有屏幕的标题都相同,您可以在navigationOptions

中更改标题