我正在构建一个依赖于api调用的Vue.js应用程序。 我正在使用axios进行调用。 我正在使用类似这个的模式。 基本上,我创建了一个服务,所有组件都将共享该服务。 以下是服务:
//api-client.js
import axios from 'axios'
import store from '../src/store'
let authKey = store.getters.getAuthKey
export default axios.create({
withCredentials: false, // This is the default
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
authorization: "Basic "+authKey
}
})
现在请注意,我正在使用getter从vuex store中获取auth token,并将其设置在服务中。
我将像这样使用此服务:
//App.vue
<template>
<div>
<!-- some code -->
</div>
</template>
<script>
import apiClient from "../api-client.js"
export default {
mounted(){
apiClient.get("#url").then(()={
// Do Something
})
}
}
</script>
<style lang="scss">
</style>
情况是,授权密钥会不时更改,因此我有一个设置可以更新存储中的授权密钥。 该设置成功地在存储中更新了授权密钥,但是api-client.js中的密钥没有被更新。它只加载一次,存储中的更新未级联到此 api-client.js 中。
是否有解决此问题的模式?请建议。