2 回答
TA贡献1821条经验 获得超6个赞
您可以添加 axiosapp.config.globalProperties
以便在任何子组件中访问它:
const app = createApp(App)
app.config.globalProperties.axios=axios
在子组件中使用this.axios
但您无法在商店上下文中访问它,因为this在操作中引用商店实例,因此您应该在商店文件中导入 axios 并使用它,如下所示:
import { createStore } from 'vuex';
import axios from 'axios';
export const store = createStore({
state: {
todos: []
},
getters: {
todos(state) {
return state.todos
}
},
mutations: {
FILL_ITEMS(state, payload) {
state.todos = payload
}
},
actions: {
fillItems({ commit }) {
axios
.get("https://jsonplaceholder.typicode.com/todos")
.then(res => commit('FILL_ITEMS', res.data))
}
}
})
或者您可以分配axios给商店实例(不建议特别使用打字稿):
const app = createApp(App)
store.axios = axios
app.use(store)
app.mount("#app")
TA贡献1827条经验 获得超7个赞
在 Vue 3 中,您可以使用提供/注入为组件创建应用程序全局变量:
提供
import { createApp } from 'vue'
import { store } from './store'
import App from './App.vue'
import axios from 'axios';
const app = createApp(App)
app.provide('axios', axios); // Providing to all components here
app.use(store)
app.mount("#app")
注射
在选项 API 中:
export default {
inject: ['axios']; // injecting in a component that wants it
}
在组合 API 中:
const { inject } = Vue;
...
setup() {
const axios = inject('axios'); // injecting in a component that wants it
}
我回答得太快了,你不是在问组件,但我也会留下这个答案。如果您只想axios在单独的模块中使用,则可以像任何导入一样使用它:
import axios from 'axios';
并使用axios而不是this.axios
添加回答
举报