【发布时间】:2018-01-30 06:26:21
【问题描述】:
我正在我的应用程序中处理原生 nativebase 抽屉组件,所以我按照以下所有步骤操作
package.json
"dependencies": {
"@expo/vector-icons": "^6.2.2",
"native-base": "^2.3.7",
"react": "16.0.0",
"react-native": "0.51.0",
"react-native-device-info": "^0.13.0",
"react-native-router-flux": "^4.0.0-beta.28",
"react-navigation": "^1.0.0-beta.27"
},
Menuscreen.js
render(){
return(
<Drawer
ref={(comp) => {this.drawer = comp}}
content={this.drawerContent()}
type={'overlay'}
panThreshold={0.30}
panOpenMask={this.state.panOpenMask}
onClose={() => this.closeDrawer()}
>
{this.setView(this.state.viewID)}
</Drawer>
)
}
setView 方法
setView(id) {
console.log("setView id;"+ id);
BackHandler.removeEventListener('hardwareBackPress', this._handleBackPressInDrawer);
switch (id){
case 0:
return(
<HomeScreen drawer={this.drawer}/>
)
case 1:
return(
<ScreenOne drawer={this.drawer}/>
)
case 2:
return(
<ScreenTwo drawer={this.drawer}/>
)
case 3:
return(
<ScreenThree drawer={this.drawer}/>
)
case 4:
return(
<ScreenContacts drawer={this.drawer}/>
)
case 5:
return(
<ScreenNotes />
)
case 6:
return(
<FourScreen drawer={this.drawer}/>
)
break;
default:
}
}
Homescreen.js
render() {
return (
<Container>
<Header style={{ alignItems:'center',paddingTop: 0, paddingBottom: 0 }}>
<Left>
<Button transparent onPress={()=>{this.props.drawer._root.open()}}>
<Icon name='menu' />
</Button>
</Left>
<Body style={{alignItems:'flex-start'}} >
<Title>HOME</Title>
</Body>
</Header>
</Container>
)
}
当我运行上面的代码并单击主屏幕上的菜单图标时,我在 homescreen.js 中收到一条错误消息,例如
未定义不是对象(评估_this2.propsdrawer.root)
知道如何解决这个问题吗?你的所有建议都很有价值
【问题讨论】:
-
我认为您需要在
constructor中绑定您的方法,例如this.setView = this.setView.bind(this); -
@RiddhiParekh:我尝试了您的建议,但仍然收到相同的错误消息
-
你在哪个文件中绑定了?
-
@RiddhiParekh: MenuScreen.js
-
其实我也遇到了这个错误,但是方法绑定解决了我的问题。
标签: javascript android react-native drawer