刘嘉琪*_*刘嘉琪 7 composition vue.js vue-component axios vuejs3
在 main.js 中,我设置axios为全局函数。
//main.js
import { createApp } from 'vue';
import App from './App.vue';
import axios from 'axios';
const app = createApp(App);
app.config.globalProperties.$http = axios;
app.mount('#app');
Run Code Online (Sandbox Code Playgroud)
问题是如何使用组合 api 在组件中调用此函数?
<script>
export default {
setup() {
//how do I call the `axios` global function?
};
</script>
Run Code Online (Sandbox Code Playgroud)
fut*_*tur 11
首先,是否不能简单地导入axios需要的组件?在 Vue 3 中,不鼓励使用组合 API 的全局属性。话虽如此,这仍然可以通过以下几种方式实现:
正如我之前提到的,理想的方法就是
import axios from 'axios'
Run Code Online (Sandbox Code Playgroud)
在需要它的组件中。
如果出于某种原因,您确实需要从您的 全局提供 Axios app,则另一种方法是使用该Provide/Inject模式。
在你的App.vue:
import { provide } from 'vue'
export default {
setup() {
provide('axios', axios);
}
}
Run Code Online (Sandbox Code Playgroud)
在任何需要它的组件中:
import { inject } from 'vue'
export default {
setup() {
const axios = inject('axios');
}
}
Run Code Online (Sandbox Code Playgroud)
getCurrentInstance()(灰心)根据Vue 文档,
强烈建议不要在应用程序代码中使用
getCurrentInstance。不要将其用作逃生舱口以在 Composition API 中获得等效的内容。
但是,如果您确实想将其维护为全局属性,则可以按如下方式使用它:
import { getCurrentInstance } from 'vue';
export default {
setup() {
const app = getCurrentInstance();
const axios = app.appContext.config.globalProperties.$http;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13390 次 |
| 最近记录: |