我正在学习Vue.js。
我有一个运行良好的代码:
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
const app = createApp(App).use(store).use(router)
app.mount('#app')
现在我想添加一些导入,例如'axios'。这段代码不会运行:
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import axios from 'axios'
const app = createApp(App).use(store).use(router).use(axios)
app.mount('#app')
错误为:
Uncaught RangeError: Maximum call stack size exceeded
at merge (utils.js?c532:276)
at assignValue (utils.js?c532:282)
at forEach (utils.js?c532:253)
at merge (utils.js?c532:291)
at assignValue (utils.js?c532:282)
at forEach (utils.js?c532:253)
at merge (utils.js?c532:291)
at assignValue (utils.js?c532:282)
at forEach (utils.js?c532:253)
at merge (utils.js?c532:291)
那么如何在mainiderjs文件中添加一些其他的“使用”呢?这当然是非常基本的,但我是一个初学者。
2条答案
按热度按时间rryofs0p1#
您使用的是vue 3,而axios不是插件(我们无法像
app.use()
那样注册它),它是一个javascript模块,可以添加到应用示例中,如下所示:并在子组件中引用它,如:
1l5u6lss2#
注:以下代码对Vue 2.x有效。自版本3起,一些关于初始化的内容发生了变化(现在需要
createApp
函数)。我通常在我的代码中做的如下:
这意味着
$http
对象现在可以在所有使用this.$http
的组件中使用。因为它被赋值为原型变量,所以它被认为是一个单例变量(在任何地方都可以重用),所以在将它赋值给Vue.prototype.$http
之前,可以向axios
变量添加任何所需的选项。此外:
Vue.use()
是专门为启用Vue插件而设计的。这意味着给定的参数必须使用这里所描述的https://v2.vuejs.org/v2/guide/plugins.html的语法。由于axios不是一个Vue插件,而只是一个普通的JavaScript库,因此您不能将其与此函数一起使用。如果您想让它变得特别漂亮(或复杂),可以使用以下语法:
如果您将此代码移到另一个文件,则可能会清除代码,因此它可能会以如下方式结束: