vue.js - 如何在整个 Vue.js 3 项目中包含一个可用的库?

标签 vue.js vuejs3

根据this blog post在 Vue.js 2 中包含常用库(例如 axios)的正确方法是将它们设置为 Vue 原型(prototype)对象的属性,如下所示:

import axios from 'axios';
Object.defineProperty(Vue.prototype, '$axios', { value: axios });
不幸的是,这种方法不再适用于 Vue.js 3。那么在整个项目中导入库的正确方法是什么?我不希望将它们设置为全局变量(即 window 对象。)

最佳答案

使用提供/注入(inject)作为替代

import { createApp } from 'vue'
import App from './App.vue'
import axios from 'axios';
    
const app = createApp(App)
app.provide('axios', axios ) // <-- define here
app.mount('#app')
然后在您想使用 axios 的任何组件中,您都可以这样做
app.component('todo-list-statistics', {
  inject: ['axios'],
  created() {
    this.axios // --> Injected property
  }
}

关于vue.js - 如何在整个 Vue.js 3 项目中包含一个可用的库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64118873/

相关文章:

vuejs3 - 函数运行vue3 composition api后如何在bootstrap上关闭模式

javascript - Vue.js 3 - 在 vue 中使用 Vue I18n 插件时出错 - 无法设置未定义的属性 '_vm'

vue.js - Vue 3 : Why is my composable not reactive?

javascript - 如何让vue中的元素只有准备好后才渲染?

npm - Vue 模块,moment-timezone - 如何正确加载 moment-timezone 以及如何使用 2012-2022 数据

javascript - Vue 3 国际化问题 : The message format compilation is not supported in this build

html - 隐藏侧边栏时添加过渡

javascript - 无法更改函数内部传递的数组

laravel - 如何在 Vue 3 中重定向另一个路由器? (在 Laravel 8 和 vue 3 中使用 next.router)

typescript - Vue 3 + TypeScript TS2614 : Module '"*. vue"' 没有导出成员