2016-05-09 5 views
1
Arbeits

Das ist, was ichReagieren india DrawerLayoutAndroid ref nicht

<DrawerLayoutAndroid 
    ref={'drawer'} 
    drawerWidth={300} 
    drawerPosition={DrawerLayoutAndroid.positions.Left} 
    renderNavigationView={() => { 
     return navigationView; 
    }}> 
     <Navigator 
     ref={'navigator'} 
     initialRoute={initialRoute} 
     navigationBar={ 
      <Navigator.NavigationBar 
      routeMapper={NavigationBarRouteMapper} 
      style={{ backgroundColor: '#68758E', height: 50 }} 
      /> 
     } 
     configureScene={(route, routeStack) => { 
      return Navigator.SceneConfigs.HorizontalSwipeJump; 
     }} 
     renderScene={(route, navigator) => { 
      console.log(this, this.refs); 
      if (this.refs.appDrawer) { 
      console.log(this.refs.appDrawer); 
      } 
      if (self.backButtonEventAdded === false) { 
      BackAndroid.addEventListener('hardwareBackPress', function() { 
       if (navigator && navigator.getCurrentRoutes().length > 1) { 
        navigator.pop(); 
        return true; 
       } 
       return false; 
      }); 
      self.backButtonEventAdded === true; 
      } 
      if (route.id == 0) { 
      return (
       <HomePage navigator={navigator} /> 
      ); 
      } 
      if (route.id == 1) { 
      return (
       <RingtonePage ringtone={route.ringtone} /> 
      ); 
      } 
     }} 
     /> 
    </DrawerLayoutAndroid> 

Jetzt im renderScene Methode der Navigator bisher haben die erste Zeile protokolliert this und this.refsconsole.log(this, this.refs) Wenn ich this im Chrom inspizieren hat es die richtige Refs darauf gesetzt, aber die zweite this.refs ist und leeres Objekt. Warum das ? enter image description here

Antwort

1

Ich verstehe nicht, was genau ist Ihr Problem ... Was ist die genaue Fehlermeldung? Hier

ist ein Beispiel für eine DrawerLayoutAndroid die großen Werke ...

<DrawerLayoutAndroid drawerWidth={300} ref={'drawer'} navigator={Navigator.SceneConfigs.HorizontalSwipeJump} drawerPosition={DrawerLayoutAndroid.positions.Right} renderNavigationView={() => navigationView}> <Navigator film={this.props.film} configureScene={(route) => { transition = Navigator.SceneConfigs.HorizontalSwipeJump transition.gestures = null}} navigator={this.props.navigator} initialRoute={{onRightButton: (() => this._openDrawer())}} navigationBar={ <Navigator.NavigationBar style={{backgroundColor: '#246dd5'}} routeMapper={NavigationBarRouteMapper} /> } renderScene={() =>this.renderScene(this.props.film)} /> </DrawerLayoutAndroid>

und hier ist die Funktion für offene es:

_openDrawer:function() { this.refs['drawer'].openDrawer(); },

Hope this Sie helfen:)!

+1

das Refs-Objekt ist nicht verfügbar für mich in diesem, dass Sie in _openDrawer-Methode verwenden, welche Version von Reactive-native verwenden Sie? Ich benutze 0.25 –

+0

Ich benutze 0.2.0! Hast du deinen DrawerLayoutAndroid in deiner Rendermethode() aufgerufen? – Mayeul