【发布时间】:2020-06-12 17:01:57
【问题描述】:
我只是想知道 Vue.js 社区目前是否就使用哪个生命周期挂钩来调度 API 获取操作达成共识?
例如,我有一个动作比如在我的Vuex store:
...
actions: {
fetchAccount: async ({ commit }, payload) => {
await Vue.prototype.$API.fetchAccount(payload).then((response) => {
commit("SET_ACTIVE_ACCOUNT", response.data);
});
},
}
...
动作被传递给服务:
import { axios } from "@/services/http";
import { EventEmitter } from "events";
class accountServiceAPI extends EventEmitter {
constructor() {
super();
this.accessToken = "";
}
fetchAccount(payload) {
return new Promise({resolve, reject} => {
axiosWave.get(`api//v2/accounts/retrieve/${payload.accountUUID}`, { headers: {} }).then(response => {
if (response.success) {
resolve(response.data);
} else {
reject(response.data);
}
}).catch(error => {
reject(error.response);
});
});
}
}
const accountServiceAPI = new accountServiceAPI();
accountServiceAPI.setMaxListeners(5);
export default accountServiceAPI;
我通常在 created() 生命周期钩子中为需要数据的组件发送这个...但肯定有更高效的方式吗?
【问题讨论】:
-
这正是我要做的。但我不会混用
aync/await和then。 -
但是,如果您的整个应用程序依赖于此,您可以在初始化之前将整个应用程序包装在其中。
-
@oshell 使用
mount()和created()甚至beforeCreate()有什么不同吗?