2016-07-20 6 views
0

Nach der AKTUALISIERT Code - Ich versuche, ich bestanden zu implementieren reagieren-native-Schublade aus https://github.com/root-two/react-native-drawer und die Variable in NavigationBarRouteMapper protokolliert openDrawer() Funktion richtig, aber wenn die linke Navigationstaste geklickt wird es tut nichts:Wie kann ich Refs in eine Variable von NavigationBar routeMapper (Reactive Native) übergeben?

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> 
    ) 
    } 
    },... 

Was könnte das Öffnen der Schublade verhindern? Scheint so, als wäre alles richtig implementiert worden.

+0

@NaderDabit Noch fest stecken –

Antwort

0

Ihr Problem ist mit dem Umfang der testingString Variable. Wenn Sie console.log(this.testingString) zeigen, zeigt this auf das Objekt, das von der NavigationBarRouteMapper-Funktion zurückgegeben wird. Sie haben für dieses Objekt keine testingString Variable festgelegt, daher wird es undefined zurückgegeben.

Um die Variable zu erhalten, die Sie auf diese Weise an die Funktion übergeben haben, verwenden Sie einfach testingString und nicht this.testingString.

bearbeiten über die openDrawer Funktion

Sie eine Funktion übergeben, dass kehrt Ihre openDrawer Funktion, anstatt sie zu rufen. Sie werden onPress={openDrawer} oder onPress={() => openDrawer()} als Ihre Requisite übergeben wollen.

+0

Danke! Es war in der Lage, richtig zu loggen. Um diesen Schritt weiter zu machen, habe ich den ursprünglichen Beitrag mit zusätzlichem Code aktualisiert, funktioniert aber immer noch nicht wie beabsichtigt. Was könnte das Problem sein? –

+0

Just update die Antwort :) –

+0

Vielen Dank! Ich habe die Antwort einfach akzeptiert. Wenn es dir nichts ausmacht, könntest du ein anderes Problem nehmen, auf das ich gestoßen bin? http://stackoverflow.com/questions/38519655/how-to-pass-navigator-reference-to-react-native-drawer –

Verwandte Themen