如何将ref传递给NavigationBar routeMapper(React Native)的variables?

以下是更新后的代码 – 我试图从https://github.com/root-two/react-native-drawer实现react-native-drawer,并且我传递给NavigationBarRouteMapper的variables正确地logging了openDrawer()函数。当左侧导航button被点击时,它什么都不做:

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

什么可能会阻止抽屉打开? 似乎一切都已经正确实施。

你的问题是与testingStringvariables的范围。 当你console.log(this.testingString)this指向由NavigationBarRouteMapper函数返回的对象。 你没有在这个对象上设置一个testingStringvariables,所以它将返回undefined。

要获得以这种方式传递给函数的variables,只需使用testingString ,而不是this.testingString

编辑关于openDrawer函数

你正在传递一个返回你的openDrawer函数的函数,而不是调用它。 你需要传递onPress={openDrawer}onPress={() => openDrawer()}作为你的道具​​。