如何将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> ) } },...
什么可能会阻止抽屉打开? 似乎一切都已经正确实施。
你的问题是与testingString
variables的范围。 当你console.log(this.testingString)
, this
指向由NavigationBarRouteMapper
函数返回的对象。 你没有在这个对象上设置一个testingString
variables,所以它将返回undefined。
要获得以这种方式传递给函数的variables,只需使用testingString
,而不是this.testingString
。
编辑关于openDrawer函数
你正在传递一个返回你的openDrawer
函数的函数,而不是调用它。 你需要传递onPress={openDrawer}
或onPress={() => openDrawer()}
作为你的道具。