Vue3定义全局变量的方式总结(附代码)

 更新时间:2024年04月03日 10:43:40   作者:前端爱好者lxy  
vue创建全局变量和方法有很多种,下面这篇文章主要给大家介绍了关于Vue3定义全局变量的方式,文中通过代码介绍的非常详细,对大家学习或者使用vue3具有一定的参考借鉴价值,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

1、main.js 设置全局变量。

import { createApp } from 'vue'
import App from './App.vue'

const app = createApp(App);

/** 定义一个函数,用于对象链式取值 */
const getObjChainingVal = (obj, keyName) => {
  // ...
  return tempObj
}
app.config.globalProperties.getObjChainingVal = getObjChainingVal;

/**定义变量$website,并赋值为devcursor**/
app.config.globalProperties.$website = 'devcursor';

在其他页面使用的时候

(1)在模板中使用:

<template>
  <div>
    作者:{{ getObjChainingVal(data, 'user.info.name') }}
    <div>{{ $website }}</div>
  </div>
</template>

(2)在语法糖<script setup>里使用:

<script setup>
import { getCurrentInstance } from 'vue'

const app = getCurrentInstance()
const website = app.appContext.config.globalProperties.$website
console.log(website)

// 或者
const { proxy } = getCurrentInstance()
console.log(proxy.$website)

// 使用解构赋值
const { $web } = getCurrentInstance()!.appContext.config.globalProperties
console.log($web)


/**注意!getCurrentInstance()不能在回调函数、方法里使用**/
//若要访问全局变量,需在函数外面调用getCurrentInstance()
const { proxy } = getCurrentInstance()
//或者
const name = getCurrentInstance().proxy.$website;
const getUserInfo=()=>{
   console.log(proxy.$website);
   console.log(name);
}

</script>

(3)组件实例中使用

<script>
export default {
  mounted() {
    console.log(this.$website) // 'devcursor'
  }
}
</script>

2、使用provide定义变量、inject获取变量

(1)父组件使用provide定义变量

import {provide} from "vue";

const data='hello Word';
provide('data',data);

(2)子组件通过inject获取变量

import {inject} from "vue";

const data=inject('data');
console.log(data,'555555555555555555555');   //输出为:hello Word 

附:定义全局函数Vue2 和 Vue3 的区别

由于 Vue3 没有 Prototype 属性,所以需要在 main.ts 文件里使用 app.config.globalProperties 去定义全局函数和变量

Vue2:

// 之前 (Vue 2.x)
Vue.prototype.$http = () => {}
Vue3:
// 之后 (Vue 3.x)
const app = createApp({})
app.config.globalProperties.$http = () => {}
定义一个全局变量,示例如下:
app.config.globalProperties.$env = "dev";

在 Vue3 移除了过滤器,定义一个全局函数代替 Filters,示例如下:

app.config.globalProperties.$filters = {
  format<T extends any>(str: T): string {
    return `衔蝉-${str}`;
  }
}

总结 

到此这篇关于Vue3定义全局变量的方式总结的文章就介绍到这了,更多相关Vue3定义全局变量内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家!

相关文章

  • vue.js 子组件无法获取父组件store值的解决方式

    vue.js 子组件无法获取父组件store值的解决方式

    今天小编就为大家分享一篇vue.js 子组件无法获取父组件store值的解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • vue最简单的前后端交互示例详解

    vue最简单的前后端交互示例详解

    这篇文章主要介绍了vue最简单的前后端交互示例详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • 使用Vue组件实现一个简单弹窗效果

    使用Vue组件实现一个简单弹窗效果

    这篇文章主要介绍了使用Vue组件实现一个简单弹窗效果,本文主要内容会涉及到弹窗遮罩的实现, slot 插槽的使用方式,props 、 $emit 传参,具体组件代码也传上去了。需要的朋友可以参考下
    2018-04-04
  • VUE中如何动态绑定类名和样式

    VUE中如何动态绑定类名和样式

    这篇文章主要介绍了VUE中如何动态绑定类名和样式问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Vue 2.0 侦听器 watch属性代码详解

    Vue 2.0 侦听器 watch属性代码详解

    这篇文章主要介绍了Vue 2.0 侦听器 watch属性代码详解,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-06-06
  • 详解如何在vue项目中使用layui框架及采坑

    详解如何在vue项目中使用layui框架及采坑

    这篇文章主要介绍了vue使用layui框架,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • Vue3中插槽(slot)用法汇总(推荐)

    Vue3中插槽(slot)用法汇总(推荐)

    这篇文章主要介绍了Vue3中插槽(slot)用法汇总,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • vue父组件向子组件传递多个数据的实例

    vue父组件向子组件传递多个数据的实例

    下面小编就为大家分享一篇vue父组件向子组件传递多个数据的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • element-plus dialog v-loading不生效问题及解决

    element-plus dialog v-loading不生效问题及解决

    这篇文章主要介绍了element-plus dialog v-loading不生效问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 基于vue的下拉刷新指令和滚动刷新指令

    基于vue的下拉刷新指令和滚动刷新指令

    这篇文章主要介绍了基于vue的下拉刷新指令和滚动刷新指令的相关资料,需要的朋友可以参考下
    2016-12-12

最新评论

?


http://www.vxiaotou.com