Vue3定义全局函数和变量

globalProperties

由于Vue3 没有vue2 Prototype 属性 使用 app.config.globalProperties 代替 然后去定义变量和函数

Vue2

// (Vue 2.x)
Vue.prototype.$http = () => {}

Vue3

//  (Vue 3.x)
const app = createApp({})
app.config.globalProperties.$http = () => {}

过滤器

在Vue3 移除了

我们正好可以使用全局函数代替Filters

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

声明文件 不然TS无法正确类型 推导

type Filter = {
    format<T>(str: T): string
}
 
// 声明要扩充@vue/runtime-core包的声明.
// 这里扩充"ComponentCustomProperties"接口, 因为他是vue3中实例的属性的类型.
declare module 'vue' {
    export interface ComponentCustomProperties {
        $filters: Filter
    }
}
 
 

setup 读取值

import { getCurrentInstance, ComponentInternalInstance } from 'vue';
 
const { appContext } = <ComponentInternalInstance>getCurrentInstance()
 
console.log(appContext.config.globalProperties.$env);
 
推荐第二种方式
 
import {ref,reactive,getCurrentInstance} from 'vue'
const app = getCurrentInstance()
console.log(app?.proxy?.$filters.format('js'))

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3 中,你可以使用 `app.config.globalProperties` 来定义全局函数,并且可以在整个应用程序中访问这些函数。 要传递参数给全局函数,你可以使用闭包或者使用一个工厂函数来创建一个带有参数的全局函数。 以下是使用闭包的示例: ```javascript // main.js import { createApp } from 'vue'; import App from './App.vue'; const app = createApp(App); // 定义全局函数 app.config.globalProperties.myGlobalFunction = (param) => { console.log('参数:', param); }; app.mount('#app'); ``` 在应用程序的任何组件中,你都可以直接调用 `myGlobalFunction` 并传递参数: ```javascript // MyComponent.vue export default { mounted() { // 调用全局函数并传递参数 this.$root.myGlobalFunction('Hello'); }, }; ``` 使用工厂函数的示例: ```javascript // main.js import { createApp } from 'vue'; import App from './App.vue'; const app = createApp(App); // 定义带有参数的全局函数的工厂函数 const createMyGlobalFunction = (param) => { return () => { console.log('参数:', param); }; }; // 创建带有参数的全局函数 app.config.globalProperties.myGlobalFunction = createMyGlobalFunction('Hello'); app.mount('#app'); ``` 同样,在应用程序的任何组件中,你可以直接调用 `myGlobalFunction`: ```javascript // MyComponent.vue export default { mounted() { // 调用全局函数 this.$root.myGlobalFunction(); }, }; ``` 这样,你就可以在 Vue 3 中传递参数给全局函数了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值