vue 2 全局封装 loading 组件

本文详细介绍了如何在Vue 2中进行全局加载组件的封装,包括注册组件、编写封装方法、定义组件样式和相关方法,以及在实际应用中的使用方式。
摘要由CSDN通过智能技术生成

注册组件

main.js 引入 封装好的方法
使用 Vue.use(loading) 注册组件

书写封装方法

import Vue from 'vue'
import loading from './loading.vue'  // loading 样式

let $app = Vue.extend(loading) 在 vue 中注册loading组件
let $loading = new $app().$mount(document.createElement('div'))
创建 loading 实例并挂载 vue 实例上
document.body.appendChild($loading.$el)

export default {
  install (vm) {
    vm.prototype.$loading = {
      show: (options) => {
        Object.keys(options).forEach(item => {
          $loading[item] = options[item]
        })
        $loading.isShow = true
      },
      hide: () => {
        $loading.isShow = false
      }
    }
  }
}

组件样式和方法

<template lang='pug'>
  .loading(v-if='isShow')
    .loading-content
      img.img(width='24' height='24' src='./loading.gif&#
Vue.js 3中,使用`this.$loading`来调用loading组件的方式已经不再适用。Vue.js 3中的组件的调用方式有所改变。您可以使用`ref`来创建一个loading组件的引用,并通过`show()`和`hide()`方法来显示和隐藏loading组件。 下面是一个示例代码: 1. 首先,在组件中引入`ref`和`defineComponent`函数: ```javascript import { ref, defineComponent } from 'vue'; ``` 2. 在组件内部使用`ref`来创建一个loading组件的引用: ```javascript export default defineComponent({ setup() { const loading = ref(null); // ... return { loading, // ... }; }, }); ``` 3. 在模板中使用`v-if`来根据`loading`的值来显示或隐藏loading组件: ```html <template> <div> <YourComponent /> <loading-component v-if="loading" /> </div> </template> ``` 4. 在需要显示loading的地方,使用`loading.value = true`来显示loading组件,使用`loading.value = false`来隐藏loading组件。 ```javascript loading.value = true; // 显示loading组件 // 在异步操作完成后隐藏loading组件 setTimeout(() => { loading.value = false; // 隐藏loading组件 }, 2000); ``` 通过以上的步骤,您可以在Vue.js 3中实现类似于`this.$loading`的功能。请注意,确保您已经正确引入了loading组件,并将其添加到了组件的模板中。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Vue 3中创建一个挂载在this上的loading](https://blog.csdn.net/Lidppp/article/details/108913801)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [vue3.x全局$toast、$message、$loading等js插件](https://blog.csdn.net/qq_25674791/article/details/120896392)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值