我目前正試圖從Vuex店行動對象中進行API調用時實現共同的任務,我的行動目前看起來是這樣的:什麼是從Vuex商店內實現常見任務的最佳途徑
/**
* check an account activation token
*
*/
[CHECK_ACTIVATION_TOKEN] ({commit}, payload) {
Api.checkActivationToken(payload.token).then((response) => {
if (response.fails()) {
return commit('NEW_MESSAGE', {message: responses.activation[response.code]})
}
return commit('SET_TOKEN')
})
}
我進行各種操作中的多個這樣的方法。我希望能夠做的是在每次調用API時提供一個加載器,並在收到響應後再次隱藏它。我可以像這樣實現:
/**
* check an account activation token
*
*/
[CHECK_ACTIVATION_TOKEN] ({commit}, payload) {
commit('SHOW_LOADER')
Api.checkActivationToken(payload.token).then((response) => {
commit('HIDE_LOADER')
if (response.fails()) {
return commit('NEW_MESSAGE', {message: responses.activation[response.code]})
}
return commit('SET_TOKEN')
})
}
但我需要重複這些SHOW_LOADER/HIDE_LOADER在每個API調用提交。
我想要做的是將此功能集中在某處,以便每次進行API調用時,加載程序的顯示和隱藏都隱含地綁定到調用,而不必每次都包含這些附加行。
爲了清楚起見,實例化的API是位於Axios之上的客戶端層,以便在啓動之前準備好呼叫。我發現我不能直接將商店導入到客戶層或Axios事件被觸發(這樣我可以集中在那裏加載器的可見性),因爲我在vuex模塊中實例化了客戶層,因此創建了一個循環引用當我試圖這樣做時,意味着商店以未定義的方式返回。
是我想通過一些鉤子或事件,我還沒有碰到可能做到的可能嗎?
您可以創建一個'中央'行爲,您可以在其中提交加載/加載的突變。此操作可以接收另一個操作名稱(字符串)作爲參數。在你的「加載」提交之間,你可以「調度」你作爲參數傳遞的行爲。但對於異步任務,關閉提交將無法按預期工作。我想你可以讓它工作,如果你的行爲返回一個Promise,這樣你就可以在回調中調用關閉提交。 – wostex
是的,我相信這是我目前所擁有的,加載模塊在調用時接受字符串SHOW/HIDE,但我仍然需要每次都進行「手動」調用。我需要通過每次顯式傳遞它(不解決問題)或通過其他一些將SHOW/HIDE綁定到事件的鉤子來將API訪問權授予商店。我還沒有找到一種做這些事情的有效方法。 – user1728296