Javascript 如何异步获取区域设置(nuxt.js+;i18n+;axios)
我希望异步获取位置。不幸的是,我的代码导致“超过最大调用堆栈大小”错误。我怎样才能正确地做呢 到目前为止,我试图通过调用messages对象内部的axios命令来实现这一点Javascript 如何异步获取区域设置(nuxt.js+;i18n+;axios),javascript,vue.js,vuejs2,axios,nuxt.js,Javascript,Vue.js,Vuejs2,Axios,Nuxt.js,我希望异步获取位置。不幸的是,我的代码导致“超过最大调用堆栈大小”错误。我怎样才能正确地做呢 到目前为止,我试图通过调用messages对象内部的axios命令来实现这一点 ~/plugins/i18n.js import Vue from "vue"; import VueI18n from "vue-i18n"; import axios from 'axios'; Vue.use(VueI18n); export default async ({ app, store }) =>
~/plugins/i18n.js
import Vue from "vue";
import VueI18n from "vue-i18n";
import axios from 'axios';
Vue.use(VueI18n);
export default async ({ app, store }) => {
app.i18n = new VueI18n({
locale: 'fr',
fallbackLocale: 'en',
messages: {
en: await axios.get('https://some-api/en/locale'),
fr: await axios.get('https://some-api/fr/locale')
}
});
}
我希望在呈现页面之前异步获取本地设置。在创建Vue实例时,可以在
beforeCreate
钩子中执行此操作:
const i18n = new VueI18n();
new Vue({
el: rootElement,
i18n,
beforeCreate() {
const vm = this;
axios.get(url)
.then((response) => {
vm.$i18n.setLocaleMessage('en', response.data);
});
}
});
在创建Vue实例时,可以在
beforeCreate
hook中执行此操作:
const i18n = new VueI18n();
new Vue({
el: rootElement,
i18n,
beforeCreate() {
const vm = this;
axios.get(url)
.then((response) => {
vm.$i18n.setLocaleMessage('en', response.data);
});
}
});
使用中间件:
或者使用axios从存储中的模块获取数据,并在nuxtServerInit
中调用它:
export default actions {
async nuxtServerInit({dispatch}){
await dispatch('apicallmodule/apicallAction')
}
使用中间件:
或者使用axios从存储中的模块获取数据,并在nuxtServerInit
中调用它:
export default actions {
async nuxtServerInit({dispatch}){
await dispatch('apicallmodule/apicallAction')
}