uniapp如何全局自定义加载

1. 什么是uniapp?

Uniapp是一个使用Vue.js开发多端应用的前端框架,在uniapp的生态系统中,我们可以快速地开发同样适合于微信小程序、支付宝小程序、H5、以及原生App等多种端的应用。因此,uniapp也被称作“微信小程序开发神器”。

Uniapp快速开发多端应用,为开发者减轻了很多工作负担,同时也为原本只能开发一个平台应用的开发者带来了新的业务。

2. Uniapp的默认加载界面

当我们打开一个uniapp应用时,如果没有自定义加载界面,uniapp默认会提供一个加载动画。如果本地缓存中已经存在应用的资源文件,则加载动画会比较快地消失掉并显示主页面。

// 默认配置的加载画面代码

<span style="color: gray">// 首先看看uni-app打开效果,看到的这个圆形的加载界面就是系统默认的加载</span>

uni.showLoading({

title: '正在连接服务器,请稍候',

mask: true,

complete: function () {

console.log('showLoading已经被执行')

}

})

可以看到,uniapp默认的加载界面就是一个正在加载的提示框,具体样式可以看当前平台。

3. 自定义加载界面

3.1 配置App.vue

我们可以选择使用第三方插件,但是也可以自定义界面。在实现自定义加载界面的时候,我们可以通过修改App.vue的Vue生命周期函数来实现。我们可以添加全局加载组件,在组件内自定义我们的加载动画或其他样式,使以后开发过程中使用更加简便,也可以提高用户体验。

首先,我们需要在App.vue中添加全局组件,这里我们创建一个Loading组件,该组件接收一个名为loading的Boolean类型值。我们可以根据这个值来控制组件的显示与隐藏。

<template>

<view>

<slot></slot>

<Loading v-if="loading" />

</view>

</template>

<script>

import Loading from "@/components/Loading";

export default {

name: "App",

components: {

Loading

},

data() {

return {

loading: true

};

},

methods: {

hideLoading() {

this.loading = false;

}

}

};

</script>

这段代码中,我们通过v-if指令来控制Loading组件的显示与隐藏,当loading为true时,显示Loading组件;当loading为false时,Loading组件就会隐藏。

3.2 Loading组件的设计

接下来,我们需要在components目录下创建我们的Loading组件。我们以一个旋转的风车作为加载动画。

<template>

<view class="loading-icon">

<view class="icon-inner" style="animation-delay: -0.56s;"></view>

<view class="icon-inner" style="animation-delay: -0.42s;"></view>

<view class="icon-inner" style="animation-delay: -0.28s;"></view>

<view class="icon-inner" style="animation-delay: -0.14s;"></view>

<view class="icon-inner"></view>

<view class="icon-inner" style="animation-delay: 0.14s;"></view>

<view class="icon-inner" style="animation-delay: 0.28s;"></view>

<view class="icon-inner" style="animation-delay: 0.42s;"></view>

<view class="icon-inner" style="animation-delay: 0.56s;"></view>

</view>

</template>

<script>

export default {

name: "Loading"

};

</script>

<style>

.loading-icon {

display: flex;

justify-content: center;

align-items: center;

height: 100vh;

}

.icon-inner {

position: absolute;

left: 50%;

top: 50%;

transform: translate(-50%, -50%);

width: 20px;

height: 20px;

background-color: #5eb1fa;

border-radius: 2px;

animation: rotate-loading 1s ease-in-out infinite;

}

@keyframes rotate-loading {

0% {

opacity: 1;

transform: translate(-50%, -50%) rotate(0deg);

}

100% {

opacity: 0.1;

transform: translate(-50%, -50%) rotate(360deg);

}

}

</style>

这样我们的Loading组件就完成了,接下来我们需要控制loading的true和false,来控制Loading组件的显示和隐藏。

3.3 控制Loading组件的显示和隐藏

我们需要在页面生命周期函数created中来控制loading的true和false,来决定Loading组件是否显示。

<script>

export default {

name: "index",

created() {

setTimeout(() => {

this.$parent.hideLoading();

}, 2000);

}

};

</script>

在页面创建成功后,通过setTimeout()函数模拟一个请求,当请求返回后,控制loading的值为false,从而隐藏Loading组件。

4. 总结

通过上面的步骤,我们就完成了自定义加载界面的过程。首先,我们需要在App.vue中添加全局组件,来控制Loading组件的显示和隐藏;接着,我们在components目录下创建一个Loading组件,该组件就是我们需要自定义的加载界面;最后,我们通过页面生命周期函数来控制Loading组件的显示和隐藏。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。