首页 资源列表 文章列表

在Vue 3中使用provide/inject或全局变量的方法

在Vue 2中,我们可以通过Vue.prototype添加全局属性或方法,这样在组件中就可以直接使用this来访问这些全局内容,在Vue 3中,Vue.prototype不再适用

1. 使用provide/inject(适用于组合式API和选项式API)

提供(Provide)

在创建Vue应用时,使用provide方法将$axios提供给所有组件。示例代码如下:

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

const app = createApp(App);
app.provide('$axios', axios); // 在应用创建时将$axios提供给所有组件

main.js或main.ts中设置

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

const app = createApp(App);
app.provide('$axios', axios); // 使用provide/inject方式
app.config.globalProperties.$axios = axios; // 使用全局配置方式

app.mount('#app');

页面中使用

import { inject } from 'vue';

export default {
  setup() {
    const $axios = inject('$axios');
    const fetchData = async () => {
      try {
        const response = await $axios.get('/api/data');
        console.log(response.data);
      } catch (error) {
        console.error(error);
      }
    };

    return {
      fetchData
    };
  }
};


0.122555s