标签:refresh load 数据 通信 bounce 使用 错误 tle vue
Better-Scroll 在决定由多少区域可以滚动时,是根据 scrollerHeight 属性决定
如何解决这个问题
如何 进行 非父子 组件的 通信
因为 涉及到 非父子组件的通信,所以这里我们 选择了 事件总线
bus -> 总线
Vue.probetype.$bus = new Vue() // 创建 vue实例
// 在 main.js 中
Vue.probetype.$bus = new Vue()
this.bus.emit(‘事件名称‘,参数1)
// 在 传出的 组件中
<template>
<div>
<img src= "" @load = 'imageLoad' />
</div>
<template>
<script>
export default {
methods: {
imageLoad() {
// 添加方法
this.$bus.$emit('ItemImageLoad')
}
}
}
</script>
this.bus.on(‘事件名称‘,回调函数(参数))
// 在 传入的 组件中
<script>
export default {
、、、 //在 mounted 中使用
mounted() {
this.$bus.$on('ItemImageLoad',() => {
this.$refs.scroll.scroll.refresh()
})
}
、、、
}
</script>
问题一: refresh 找不到的问题
第一: 在 Scroll.vue 中, 调用 this.scroll 的方法之前,判断 this.scroll 对象是否 有值
refresh() {
this.scroll && this.scroll.refresh();
}
第二:在 mounted 生命周期 函数 中 使用 this.$refs.scroll 而 不是在 created中使用
对于 refresh 非常 频繁 的问题,进行防抖操作
防抖debounce / 节流 throttle
防抖函数起作用的过程
如果我们直接 执行 refresh ,那么 refresh 函数会被执行 请求数据多少 的次数
可以 refresh 函数传入 到 deboundce 函数中,生成一个新的 函数
之后再调用非常频繁的实收,就使用新生成的函数
而新生成的函数,并不会非常频繁的调用,如果下一次执行来的非常快,那么会将上一次取消掉
// 防抖动函数
debounce(func, delay) {
let timer = null;
return function(...args) {
if (timer) clearTimeout(timer);
timer = setTimeout(() => {
func.apply(this,args);
}, delay);
};
}
标签:refresh load 数据 通信 bounce 使用 错误 tle vue
原文地址:https://www.cnblogs.com/downrain/p/11707553.html