猿问

React子组件调用父组件的回调函数,为什么获取不到正确的state

组件的逻辑是点击NavList可以切换tab,PullDownRefresh是一个下拉刷新组件我在render()输出时显示当前的this.state.selectedIndex已经改变,但是在onRresh里面this.state.selectedIndex一直为0,代码如下:
//父组件
state={
selectedIndex:0,
}
onRefresh=()=>{
console.log(this.state.selectedIndex)//错误:一直显示0
}
handleTabChange=index=>{
this.setState({
selectedIndex:index
})
}
render(){
let{tabList,entryList}=this.props
console.log('render'+this.state.selectedIndex)//正确:1,2,3,4,...
return(
tabs={tabList}
onCaretClick={this.goToTab}
showCaret={true}
selectedIndex={this.state.selectedIndex}
onTabChange={this.handleTabChange}
/>
{dataSource.length===0?:null}
dataSource={entryList}
onRefresh={this.onRefresh}
/>
)
}
子组件
//子组件PullDownRefresh监听触摸事件,调用父组件的回调函数
handleTouchEnd=e=>{
this.props.onRefresh()
}
一直没找到原因,之前写回调函数都没遇到这个问题啊
胡子哥哥
浏览 462回答 2
2回答

泛舟湖上清波郎朗

传递函数给子组件的时候bind一下父组件试试:onRefresh={this.onRefresh.bind(this)}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答