javascript - react native : can't a method be used from 'routeMapper' ?

标签 javascript react-native reactjs

我正在使用 https://github.com/root-two/react-native-drawer 的 React Native Drawer |

我试图通过将变量传入 NavigationBarRouteMapper 来调用方法 openDrawer()。我尝试在 NavigationBarRouteMapper 中登录,它记录了正确传入的变量。但是当它在 NavigationBarRouteMapper 内部使用时,通过单击“打开抽屉”的左导航按钮,它不会执行任何操作:

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

为什么可能是这个问题?

最佳答案

在您的 constructor() 方法中添加:this.openDrawer = this.openDrawer.bind(this);

您可能在错误的范围内使用了 this

关于javascript - react native : can't a method be used from 'routeMapper' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38512322/

相关文章:

node.js - 将 jwt 暴露给客户端可能会导致安全问题

reactjs - 使用带有反应钩子(Hook)的 Draft js 提及插件

javascript - 在 CSS "scale"中更改 "transform"属性

javascript - 将逻辑应用于 defaultProps

javascript - 如何在 React Native ListView 中过滤和呈现重复出现的嵌套 JSON 数据?

javascript - React-无法读取未定义的属性 'setState'

javascript - jquery UI 组合框 ONCHANGE 不起作用

javascript - 无法在带有 Nightwatch 的 Chai.js 中使用期望

ios - react native ios 构建失败

Android:RemoteConnection 初始化失败:RemoteConnection 无法打开管道