vue2模块懒加载
data() {
????????return {
????????????????observer: null,
?????????????????stopObserverData:[]
????????};
},
mounted(){
????????const observerCallback = (entries) => {
????????????????entries.forEach(entry => {
????????????????????????if (entry.intersectionRatio > 0) { // 被观察者进入视口
? ? ????????????????????????this.getData(entry.target.id);
????????????????????????}
????????????????});
????????}
????????this.observer = new IntersectionObserver(observerCallback)
????????data.map(item => {
????????????????this.observer.observe(document.getElementById(item.id))
????????})
}
methods:{
????????getData(id){
????????????????return new Promise(async (resolve, reject) => {
????????????????????????if (id) {
????????????????????????????????if (this.$refs[`ref-${id}`]) {
????????????????????????????????????????await this.$refs[`ref-${id}`][0]?.init();
????????????????????????????????????????this.stopObserverData.push(id)
????????????????????????????????}
????????????????????????????????resolve(true);
????????????????????????} else {
????????????????????????????????resolve(false);
????????????????????????}
????????????????}).then((res) => {
????????????????????????if (res) {
????????????????????????????????this.observer.unobserve(document.getElementById(id))
????????????????????????}
????????????????});
???????????},
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!