我已经创建了一个设置DrawerLayoutAndroid的组件,我想在我的索引文件中调用它。
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();
}
}
然后我将我的索引文件中的render()函数中的所有内容都包含在内,因为我希望可以从任何地方访问抽屉。我只是想不通如何从索引文件中打开抽屉。我已经尝试了几种不同的方法来调用函数,但我总是得到undefined不是一个对象。
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();
}
}
这给了我错误“undefined不是一个对象(评估'this.refs.menudrawer.openDrawer')”。
我该如何解决这个问题?
由于
答案 0 :(得分:1)
看起来不错,你只是错误地访问了menudrawer。它应该是:
this.menudrawer.openDrawer();
因为你的参考是:
ref={(_menudrawer) => this.menudrawer = _menudrawer}