在createStackNavigator onPress中设置标题

时间:2019-06-29 11:36:30

标签: react-native expo

我正在制作本机应用程序。我有按钮和onPress我想发送headerTitle到createStackNavigator,但是我有一些错误。我用setParams发送标题,在createStackNavigator中,我用getParam获取标题。 为什么不起作用怎么正确? 代码:

// page.js
   
   <TouchableOpacity
           onPress={() => navigate('Page2', {
             this.props.navigation.setParams({Title: 'Title'});
           })}>
           
           // createStackNavigator
           
     export default createStackNavigator(
    {
      Main: {
        screen: Page1,
      },
      Page2: {
        screen: Page2,
        navigationOptions: ({ navigation }) => ({
          headerTitle: navigation.state.getParam('Title', 'Default Title'),
        }),
      },
    },
    {
      initialRouteName: 'Main',
    }
  );

1 个答案:

答案 0 :(得分:0)

该问题似乎是按照该应用的操作顺序发生的。

因为在设置该值之前已经获得了该值,所以该值必须为null或undefind,这是设置之前的值。

尝试将其用作全局函数。

globalScreen

let TITLE = "defaultTitle"
function setT(data){
 TITLE = data;
}

function getT() {
return TITLE;
}

export { setT, getT }

用法

// page.js
   import {setT } from "globalScreen"
  <TouchableOpacity
           onPress={() => { 
                   setT("page2");
                   navigate('Page2'); }}>

           // createStackNavigator

   import {getT } from "globalScreen"

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