在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
};
}
};