这个问题得到了很多回答,但我已经尝试过所有这些问题都没有成功。我尝试绑定该函数,但它仍然给我这个错误:
_this3.toggleDrawer is not a function
代码:
class DrawerContent extends Component {
toggleDrawer() {
this.context.drawer.toggle()
}
_renderHeader(section) {
if (section.content.length === 0) {
var sectionID = section.title.match(/\d/g).join("")
return(
<View>
<TouchableOpacity onPress={() => {
NavigationActions.movie_grid({dataID: sectionID})
this.toggleDrawer()
}}>
<Text style={{color: "#000", padding: 15}}>{section.title.replace(/[0-9]|,/g, '')}</Text>
</TouchableOpacity>
</View>
)
} else {
return(
<View>
<Text style={{color: "#000", padding: 15}}>{section.title.replace(/[0-9]|,/g, '')}</Text>
</View>
)
}
}
}
答案 0 :(得分:1)
你没有在这里包含所有代码,但我的猜测是你没有约束_renderHeader()
。我假设这是在ListView
中使用的,所以看起来应该是这样的:
<ListView
renderHeader={this._renderHeader.bind(this)}
... />
在this
中绑定_renderHeader
,然后可以在其他功能中正确绑定this
。
答案 1 :(得分:0)
对元素的React回调需要绑定才能使this
正常工作。
尝试将以下功能添加到您的课程中:
onOpacityClick() {
NavigationActions.movie_grid({dataID: sectionID});
this.toggleDrawer();
}
尝试将您的第一次回复替换为:
return(
<View>
<TouchableOpacity onPress={this.onOpacityClick.bind(this)}>
<Text style={{color: "#000", padding: 15}}>{section.title.replace(/[0-9]|,/g, '')}</Text>
</TouchableOpacity>
</View>
)