Vue3 全局实例上挂载属性方法案例讲解

 更新时间:2023年05月03日 10:53:43   作者:旧梦星轨  
这篇文章主要介绍了Vue3 全局实例上挂载属性方法,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

导语

在大多数开发需求中,我们有时需要将某个数据,或者某个函数方法,挂载到,全局实例身上,以便于,在项目全局的任何位置都能够调用其方法,或读取其数据。

在Vue2 中,我们是在 main.js 中 直接将数据或者方法绑定在 Vue.prototype 身上,在页面中,可以直接通过 this.事件名或数据名 就能够拿到数据。

let art = () => {
  alert("事件方法")
}
import Vue from 'vue'
Vue.prototype.$art = art

页面中 通过 this 拿取到数据方法。

    mounted() {
        this.$art()
    }

如今在 Vue3 中,结合了组合式 Api ,在 setup 函数中,我们无法获取到 this,所以这样的需求实现,就得到了变更。 Vue3 提供了一个新的 Api globalProperties,用来实现这样的需求。

案例中,在 main.js 中定义好一个回调函数的方法。

import { createApp } from 'vue';
import App from './App.vue'
const app = createApp(App)
let art = () => {
  alert("事件方法")
}
app.config.globalProperties.art = art      //  通过 globalProperties  将回调函数绑定在全局
app.mount('#app')

页面中读取 需要借助于使用 getCurrentInstance Api 钩子

方法一

<script setup>
import { getCurrentInstance } from "vue"   // 引用 getCurrentInstance
//  getCurrentInstance().appContext.config.globalProperties 获取全局上下文,可以解构得到 我们前面绑定的数据方法
const { art } = getCurrentInstance().appContext.config.globalProperties
let clicklogin = (formName) => {
  art()     //直接调用方法本身
}
</script>

方法二

<script setup>
import { getCurrentInstance } from "vue"
const { proxy } = getCurrentInstance()    //获取 getCurrentInstance 身上的 proxy 代理属性
let clicklogin = (formName) => {
  proxy.art()           //可以直接在 proxy代理属性身上调用方法。
}
</script>

有细心的小伙伴,会发现 getCurrentInstance 这个Api 在官方文档中,查询不到,这是因为,在最新的V3 官方文档中,对 getCurrentInstance 进行了移除。

至于为何现在还能使用,据说是现在 作为一个隐式的内部 Api 使用

上面提到的方法,虽然可以通过 app.config.globalPropertiesgetCurrentInstance 来定义全局方法数据,和读取数据,但是这种方法,并不推荐使用,如下,官方的描述

相比于上面提到的方法,我们更推荐使用 provide 以及 inject 来实现全局挂载数据方法。

在main.js 中

import { createApp } from 'vue';
import App from './App.vue'
const app = createApp(App)
let art = () => {
  alert("事件方法")
}
app.provide("art", art)    //将要挂载的参数, 通过 provide ,注入给后代实例
app.mount('#app')

页面中:

<script setup>
import { inject } from "vue"
let art = inject("art")      //  通过 inject 可以获取到 全局实例上 通过 provide  所注入的参数值。
let clicklogin = (formName) => {
    art()
}
</script>

以上就是给大家带来的,有关于在 Vue3 中,如何实现全局挂载属性方法。

到此这篇关于Vue3 全局实例上挂载属性方法的文章就介绍到这了,更多相关Vue3挂载全局属性内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue路由切换时的左滑和右滑效果示例

    Vue路由切换时的左滑和右滑效果示例

    这篇文章主要介绍了Vue路由切换时的左滑和右滑效果,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • vite+vue3+ts项目新建以及解决遇到的问题

    vite+vue3+ts项目新建以及解决遇到的问题

    vite是一个基于Vue3单文件组件的非打包开发服务器,它具有快速的冷启动,不需要等待打包操作,下面这篇文章主要给大家介绍了关于vite+vue3+ts项目新建以及解决遇到的问题的相关资料,需要的朋友可以参考下
    2023-06-06
  • vue实现旋转木马动画

    vue实现旋转木马动画

    这篇文章主要为大家详细介绍了vue实现旋转木马动画,图片数量无限制,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • vue实现在进行增删改操作后刷新页面

    vue实现在进行增删改操作后刷新页面

    这篇文章主要介绍了vue实现在进行增删改操作后刷新页面,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Vue报错Module build failed: Error: Node Sass version 7.0.1 is incompatible with 4.0.0.解决方案

    Vue报错Module build failed: Error: Node&nb

    这篇文章主要介绍了Vue报错Module build failed: Error: Node Sass version 7.0.1 is incompatible with 4.0.0.解决方案,需要的朋友可以参考下
    2023-06-06
  • Vue 可拖拽组件Vue Smooth DnD的使用详解

    Vue 可拖拽组件Vue Smooth DnD的使用详解

    最近需要有个拖拽列表的需求,发现一个简单好用的 Vue 可拖拽组件,本文主要介绍了可拖拽组件Vue Smooth DnD的使用,感兴趣的可以了解一下
    2021-07-07
  • 关于vue中如何监听数组变化

    关于vue中如何监听数组变化

    这篇文章主要介绍了关于vue中如何监听数组变化,对vue感兴趣的同学,必须得参考下
    2021-04-04
  • Vue透传Attributes使用解析

    Vue透传Attributes使用解析

    本文主要介绍了Vue透传Attributes使用解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • vue3中setup语法糖下通用的分页插件实例详解

    vue3中setup语法糖下通用的分页插件实例详解

    这篇文章主要介绍了vue3中setup语法糖下通用的分页插件,实例代码介绍了自定义分页插件:PagePlugin.vue,文中提到了vue3中setup语法糖下父子组件之间的通信,需要的朋友可以参考下
    2022-10-10
  • 详解vue中使用express+fetch获取本地json文件

    详解vue中使用express+fetch获取本地json文件

    本篇文章主要介绍了详解vue中使用express+fetch获取本地json文件,非常具有实用价值,需要的朋友可以参考下
    2017-10-10

最新评论