Vue element-ui 使用Loading服务按需引入的坑

vue

前言

因为开发组件,需要按需引入element-ui的组件,但是v-loading如果按需引入就需要使用element-ui提供的Loading服务来实现,具体属性和用法可以到官网查看,本文记录一下自己使用过程中的一个坑。

简单使用

全屏加载的方式很简单,不需要参数即可实现,这里讲一下局部加载loading时的简单用法

<template>

<div class="component">

<div class="header">header</div>

<div class="main">

<div class="content1">content1</div>

<div class="content2">content2</div>

</div>

<div class="footer">footer</div>

</div>

</template>

<script>

// 引入Loading

import { Loading } from 'element-ui'

export default {

data() {

return {

loading: null

}

},

created() {

this.getData()

},

methods: {

// 获取接口数据

getData() {

// 在需要加载的时候使用如下方法,如果不需要频繁加载,直接写到mounted钩子函数即可

this.loading && this.loading.close() // 这里是为了防止还没有请求结束(loading未关闭)再次连续触发

this.loading = Loading.service({

// 这里可以直接使用选择器名称,当然也可以用ref获取DOM结构,可以提前把DOM结构缓存起来,这样频繁被触发的时候是不是就不会重新获取DOM了呢?好像可以提升一丢丢性能吧(个人理解)

target: '.content2'

})

// 获取数据的接口

getData().then(res => {

// 关闭loading

this.loading.close()

})

}

}

}

</script>

<style lang="less">

.component{

// 这里需要给局部加载loading的地方添加相对定位

.content2{

position: relative;

}

}

<style>

这里的重点其实是需要给局部加载的元素添加相对定位,因为初次加载不会出现问题,但是当你把网速放慢,频繁获取数据时就会出现loading定位不准的情况,通常是被定位到了自己的上层有定位的父元素(绝对定位的知识)

以上是 Vue element-ui 使用Loading服务按需引入的坑 的全部内容, 来源链接: utcz.com/z/379703.html

回到顶部