在改项目的时候,发现onPullDownRefresh()这个生命周期一直不会执行,一开始还在想会不会是因为是在浏览器调试不行,后来在app端调试也不行,我的导师提出方向去检查一下:是否是标签或者组件嵌套导致的。最后发现,真的是因为组件嵌套导致的!!!(大哥就是大哥,就是比较聪明)
这个情况是这样的,原本代码是在子组件里调用了onPullDownRefresh(),下拉之后可以触发,但是不执行生命周期。经过控制台输出发现,在父组件里是会执行onPullDownRefresh()的,可以断定,必须在父组件里执行这个生命周期。但是子组件刷新时的页面操作全部都在子组件里,这时可以使用ref在父组件调用子组件的方法,这样就可以实现下拉刷新了。
具体步骤,在父组件里调用的子组件标签上加
例如:
<child ref="xxxx">
然后在父组件的onPullDownRefresh()中
onPullDownRefresh() {
this.$refs.xxxx.onRefresh();
},
此时需要确保的是子组件中必须有onRefresh()方法
在子组件中的方法:
onRefresh() {
console.log("执行下拉刷新");
}
事实证明,ref是个很好用的东西。做个记录,希望以后遇到类似的情况能够回忆起来。