我正在為 eventBus 使用VueJs和手套,如您所見,手套是全域加載的并且作業正常:
main.js
const emitter = mitt();
const app = createApp(App)
app.config.globalProperties.emitter = emitter
我在我的所有組件中都這樣呼叫 eventBus:它作業正常 this.emitter.emit('eventName', data)
我的問題是當我在 axios 攔截器中使用它時出現錯誤(未定義)
我的client.js (axios 實體)
const client = axios.create({
// withCredentials: true,
baseURL: ((authenticated.data.domain !== null) ? authenticated.data.domain : 'http://mydomain.test/api')
});
client.interceptors.response.use((response) => {
// problem is here
this.emitter.emit('alert', response.data);
return response;
}, (error) => {
return Promise.reject(error.message);
});
export default client;
uj5u.com熱心網友回復:
app.config.globalProperties用于創建Vue 組件實體的全域變數(不是全域變數window)。您錯誤地嘗試在 Axios 實體中使用全域事件總線,因為該this箭頭函式中的undefined.
一種解決方案是分解事件總線,并在需要的地方匯入它:
// emitter.js
import mitt from 'mitt'
export default mitt()
// main.js
??
import emitter from './emitter.js'
const app = createApp(App) ??
app.config.globalProperties.emitter = emitter
// client.js
??
import emitter from './emitter.js'
?
client.interceptors.response.use((response) => {
??
emitter.emit('alert', response.data);
return response;
}, (error) => {
return Promise.reject(error.message);
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/493882.html
下一篇:多種字典型別的C#切換型別
