簡體   English   中英

無法在反應導航中將道具從Stacknavigator傳遞到DrawerNavigator

[英]Can not pass prop from Stacknavigator to DrawerNavigator in react-navigation

目前,我對屏幕有這種污點:

const Tabs = TabNavigator({
  Home: {
    screen: Home,
    navigationOptions: {
      tabBarLabel: 'Home',
      tabBarIcon: <Image style={{height: 22, width: 22}} source={require('../assets/images/nav-home.png')}/>,
      header: null
    }
  },
  Thanks: {
    screen: Thanks,
    navigationOptions: {
      tabBarLabel: 'Thanks',
      tabBarIcon: <Image style={{height: 22, width: 21}} source={require('../assets/images/nav-thanks.png')}/>,
      header: null
    }
  },
  Profile: {
    screen: Profile,
    navigationOptions: {
    gesturesEnabled: false
    }
  },
},
{
  initialRouteName: 'Home',
  tabBarPosition: 'bottom',

},
)

const Drawer = DrawerNavigator(
  {
    Tabs: {
      screen: Tabs,
      navigationOptions: {
        drawerLabel: () => null
      }
    },
    Search: {screen: SearchAndProfile}
  },
  {
    drawerPosition: 'right',
    initialRouteName: 'Tabs',
    drawerOpenRoute: 'DrawerOpen',
    drawerCloseRoute: 'DrawerClose',
    drawerToggleRoute: 'DrawerToggle'
})

const NotLoggedIn = StackNavigator(
  {
   LoginScreen: {
screen: Login,
     navigationOptions: {
          gesturesEnabled: false,
      }
    },
   Drawer: {screen: Drawer}
  },
  {
   initialRouteName: 'LoginScreen',
   headerMode: 'none',
   navigationOptions: {
    gesturesEnabled: false,
  }
  }
)

const LoggedIn = StackNavigator(
  {
   Drawer: {screen: Drawer}
  },
  {
   headerMode: 'none',
   navigationOptions: {
    gesturesEnabled: false,
  },
  transitionConfig : () => ({
    transitionSpec: {
      duration: 0,
      timing: Animated.timing,
      easing: Easing.step0,
    },
  }),
  }
)

export const Root = StackNavigator(
  {
    Splash:{screen: Splash},
    LoggedIn: {
      screen: LoggedIn,
      navigationOptions: {
        gesturesEnabled: false
      }
    },
    NotLoggedIn: {screen: NotLoggedIn}
  },
  {
    headerMode: 'none',
    navigationOptions: {
    gesturesEnabled: false,
  },
  transitionConfig : () => ({
    transitionSpec: {
      duration: 0,
      timing: Animated.timing,
      easing: Easing.step0,
    },
  }),
  }
)

並且我試圖將參數從啟動屏幕傳遞到登錄屏幕,但似乎在TabNavigator中未定義參數(在主屏幕中)

我像這樣通過

this.props.navigation.navigate('LoggedIn',{testData: 'testing'}) 

在我登錄this.props.navigation.state.params時在componentDidMount()函數中獲得未定義。 可能是什么原因?

您是否嘗試過這個,(來自github上的討論

this.props.navigation.navigate('LoggedIn', {}, {
    type: "Navigate",
    routeName: "Drawer",
    params: {testData: 'testing'},
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM