android - React Native DrawerLayoutAndroid 引用不起作用

标签 android reactjs react-native drawerlayout

这是我目前的情况

  <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>

现在在 Navigator 的 renderScene 方法中,第一行记录 thisthis.refs console.log(this, this.refs) 当我在 chrome 中检查 this 时,它上面设置了正确的引用,但第二个 this.refs 是空对象。这是为什么 ? enter image description here

最佳答案

我不明白你的问题到底是什么...准确的错误消息是什么?

这是一个 DrawerLayoutAndroid 的例子,效果很好......

<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>

这是打开它的函数:

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

希望这对您有所帮助:)!

关于android - React Native DrawerLayoutAndroid 引用不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37119119/

相关文章:

android - 如何查询带排序的Android DownloadManager?

android - PagerTabStrip 缺少选项卡导航面板

reactjs - 将绝对路径添加到由 "Create React App"创建的应用程序

reactjs - 如何将焦点从一个文本输入转移到另一个文本输入?

react-native - 如何编写重用常见 JavaScript 代码的 react native "native module"( bridge )?

java - 如何更改操作栏上标题文本的大小?

javascript - 促进将标签属性附加到数组内、对象内的每个对象的最佳/最有效方法是什么?

android - 我如何设计一个移动应用程序来跟踪其他应用程序

javascript - React-native如何在文本输入上向上移动屏幕

android - 确定按钮的 onclick 监听器