【问题标题】:Set title in createStackNavigator onPress在 createStackNavigator onPress 中设置标题
【发布时间】:2019-06-29 11:36:30
【问题描述】:

我正在制作反应原生应用程序。我有按钮和 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',
    }
  );

【问题讨论】:

    标签: react-native expo


    【解决方案1】:

    问题似乎出现在应用的运行顺序中。

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

    尝试将其用作全局函数。

    全局屏幕

    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',
        }
      );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-16
      • 1970-01-01
      • 1970-01-01
      • 2019-07-09
      • 1970-01-01
      • 2015-04-18
      • 2010-10-14
      • 1970-01-01
      相关资源
      最近更新 更多