当前位置: 首页 > 知识库问答 >
问题:

哪个生命周期钩子是发送API获取请求的最佳实践?

柴砚文
2023-03-14

我只是想知道Vue内部目前是否有共识。js社区关于使用哪个生命周期钩子来调度API获取操作?

例如,我在我的Vuexstore中有一个操作:

  ...
  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;

我通常会在为需要数据的组件创建的生命周期钩子中分派这个...但是肯定有一个更高性能的方法

共有1个答案

厍光霁
2023-03-14

早在created()中,您就可以从API获取并操作数据/状态<代码>装入()在实例已经装入或呈现时调用。您通常会在此处执行与UI相关的设置。

此外,您还可以改进fetchAccount操作,如下所示:

js prettyprint-override">fetchAccount: async ({ commit }, payload) => {
  const { data } = await Vue.prototype.$API.fetchAccount(payload);
  commit("SET_ACTIVE_ACCOUNT", data);
}
 类似资料:
  • 每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会。 比如created钩子可以用来在一个实例被创建之后执行代码: new Vue({ data: { a: 1 }, created: fu

  • 本文向大家介绍详解Vue 实例中的生命周期钩子,包括了详解Vue 实例中的生命周期钩子的使用技巧和注意事项,需要的朋友参考一下 Vue 框架的入口就是 Vue 实例,其实就是框架中的 view model ,它包含页面中的业务处理逻辑、数据模型等,它的生命周期中有多个事件钩子,让我们在控制整个Vue实例的过程时更容易形成好的逻辑。 Vue 实例 在文档中经常会使用 vm 这个变量名表示 Vue 实

  • 每个请求对象只在一个 servlet 的 service 方法的作用域内,或过滤器的 doFilter 方法的作用域内有效,除非该组件启用了异步处理并且调用了请求对象的 startAsync 方法。在发生异步处理的情况下,请求对象一直有效,直到调用 AsyncContext 的 complete 方法。容器通常会重复利用请求对象,以避免创建请求对象而产生的性能开销。开发人员必须注意的是,不建议在上

  • vue3中的指令如何在mounted生命周期钩子函数中获取app.config.globalProperties? 是写在组件库里,无法获取main.js的app

  • 我对铁锈寿命的学习过程如下(基于铁锈书): 我想注释,当引用后面的值超出范围时 通常(并不总是!请参阅. data部分,即'静态')值位于块中 我们注释像这样的块,例如结构字段像 。 在哪一点上我的理解是错误的?提前感谢你对我的宽容。 免责声明:

  • 本文向大家介绍组件进来请求接口时你是放在哪个生命周期?为什么?相关面试题,主要包含被问及组件进来请求接口时你是放在哪个生命周期?为什么?时的应答技巧和注意事项,需要的朋友参考一下 一般在created 因为在这个生命周期我们常用到的都已经初始化好了 如果涉及dom 那就mounted