问题描述:在封装axios的request.js文件中 设置国际化 访问到正常情况下的 this.$t('xxx.xxx'),但是在实际中 request.js 访问不到vue的vm实例(也就是this指向为undefined)
解决方案: 1、在 main.js 中 将 Vue 实例导出
const vueThis = new Vue({
el: '#app',
router,
store,
i18n,
render: h => h(App)
})
export default vueThis
2、再到 request.js 中 引入导出的 vue
import Vue from '@/main'
// 注: 注意不要导入后直接console.log(Vue), 因为这个时候组件还没创建打印结果肯定是undefined。
console.log('vue', Vue) // vue undefined
...
service.interceptors.response.use(
response=>{
// 3、 可以直接使用 Vue.xxx 访问到挂载到vue实例上的内容
console.log('vue', Vue.$t('xxx.xxx')) // 即可获取到所定义的国际化翻译
},
error=>{
console.log('vue', Vue.$t('xxx.xxx')) // 即可获取到所定义的国际化翻译
}
)