Reactjs 如何从父组件调用DrawerLayoutAndroid上的openDrawer函数?

Reactjs 如何从父组件调用DrawerLayoutAndroid上的openDrawer函数?,reactjs,react-native,react-native-android,Reactjs,React Native,React Native Android,我制作了一个组件来设置DroperLayoutAndroid,我想在我的索引文件中调用它 drawer.js: export default class MenuDrawer extends Component { constructor(props) { super(props); this.openDrawer = this.openDrawer.bind(this); } render() { var navigati

我制作了一个组件来设置DroperLayoutAndroid,我想在我的索引文件中调用它

drawer.js:

export default class MenuDrawer extends Component {
    constructor(props) {
        super(props);
        this.openDrawer = this.openDrawer.bind(this);
    }
    render() {
        var navigationView = (
            // ...
        );
        return (
            <DrawerLayoutAndroid
                ref={(_drawer) => this.drawer = _drawer}
                drawerWidth={200}
                drawerPosition={DrawerLayoutAndroid.positions.Left}
                renderNavigationView={() => navigationView}>
            {this.props.children}
            </DrawerLayoutAndroid>
        );
    }
    openDrawer() {
        this.drawer.openDrawer();
    }
}
导出默认类MenuDrawer扩展组件{
建造师(道具){
超级(道具);
this.openDrawer=this.openDrawer.bind(this);
}
render(){
var navigationView=(
// ...
);
返回(
this.drawer=\u drawer}
抽屉宽度={200}
DroperPosition={DroperLayoutAndroid.positions.Left}
renderNavigationView={()=>navigationView}>
{this.props.children}
);
}
openDrawer(){
this.drawer.openDrawer();
}
}
然后,我将索引文件中render()函数中的所有内容都打包,因为我希望抽屉可以从任何地方访问。我只是不知道如何从索引文件中打开抽屉。我尝试了几种不同的方法来调用函数,但最终总是得到未定义的对象

index.android.js

export default class AwesomeProject extends Component {
    constructor(props) {
        super(props);
        this.openMenu = this.openMenu.bind(this);
    }

    render() {
        const { region } = this.props;
        return (
            <MenuDrawer
                ref={(_menudrawer) => this.menudrawer = _menudrawer}
                style={styles.layout}>
                <TouchableHighlight
                    style={styles.topbar}
                    onPress={this.openMenu}>
                <Text>Open</Text>
                </TouchableHighlight>
            </MenuDrawer>
        );
    }

    openMenu() {
            this.refs.menudrawer.openDrawer();
    }
}
导出默认类AwesomeProject扩展组件{
建造师(道具){
超级(道具);
this.openMenu=this.openMenu.bind(this);
}
render(){
const{region}=this.props;
返回(
this.menudrawer=\u menudrawer}
style={style.layout}>
打开
);
}
openMenu(){
this.refs.menudrawer.openDrawer();
}
}
这给了我一个错误“undefined不是对象(计算'This.refs.menudrawer.openDrawer')”

我该如何着手解决这个问题


谢谢

看起来不错,您只是不正确地访问了菜单绘图程序。应该是:

this.menudrawer.openDrawer();
因为您的ref是:

ref={(_menudrawer) => this.menudrawer = _menudrawer}

就这样。非常感谢你!!