2016-07-20 28 views
0

以下是更新後的代碼 - 我想實現從https://github.com/root-two/react-native-drawer反應,本機的抽屜,我便走進NavigationBarRouteMapper正常登錄openDrawer()函數的變量,但點擊左側導航欄中的按鈕時,它什麼都不做:如何將ref傳遞給NavigationBar routeMapper(React Native)的變量?

class practice extends Component { 
... 

    openDrawer(){ 
    this._drawer.open() 
    } 

    render() { 
    return (
    <Drawer 
    content={<DrawerPanel/>} 
    openDrawerOffset={100} 
    ref={(ref) => this._drawer = ref} 
    type='static' 
    tweenHandler={Drawer.tweenPresets.parallax} 
    > 
     <Navigator 
      configureScene={this.configureScene} 
      initialRoute={{name: 'Start', component: Start}} 
      renderScene={this.renderScene} 
      style={styles.container} 
      navigationBar={ 
      <Navigator.NavigationBar 
       style={styles.navBar} 
       routeMapper={NavigationBarRouteMapper(this.openDrawer)} 
      /> 
      } 
     /> 
    </Drawer> 
    ); 
    } 
} 

var NavigationBarRouteMapper = openDrawer => ({ 
    LeftButton(route, navigator, index, navState){ 
     return(
      <TouchableHighlight onPress={()=>{openDrawer}}> 
       <Text>Open Menu</Text> 
      </TouchableHighlight> 
    ) 
    } 
    },... 

什麼可能會阻止抽屜打開?似乎一切都已正確實施。

+0

@NaderDabit仍然卡住 –

回答

0

您的問題與testingString變量的範圍有關。當你console.log(this.testingString),this指向由NavigationBarRouteMapper函數返回的對象。您尚未在此對象上設置testingString變量,因此它將返回undefined。

要獲得以這種方式傳遞給函數的變量,只需使用testingString而不是this.testingString

關於

你傳遞一個函數,返回功能openDrawer而不是調用它的openDrawer功能編輯。您需要通過onPress={openDrawer}onPress={() => openDrawer()}作爲您的道具。

+0

謝謝!它能夠正確記錄。現在爲了進一步學習這一步,我使用附加代碼更新了原始文章,但它仍然無法按預期運行。可能是什麼問題? –

+0

剛剛更新了答案:) –

+0

非常感謝!剛剛接受了答案。如果你不介意你能否接受我遇到的另一個問題? http://stackoverflow.com/questions/38519655/how-to-pass-navigator-reference-to-react-native-drawer –

相關問題