代码之家  ›  专栏  ›  技术社区  ›  SkyeBoniwell

如何隔离和提取常见的AXIOS调用以防止代码重复?

  •  0
  • SkyeBoniwell  · 技术社区  · 6 年前

    我试图将一组AXIOS调用转移到一个单独的实用程序文件中,这样我就可以共享它们,并且避免在各处重写相同或类似的AXIOS调用。

    但是,我不知道如何做到这一点,仍然可以利用 then catch 调用的一部分,我在其中执行一些独特的操作,如更新状态和/或变量。

    这里有一个我使用的AXIOS调用,在我的应用程序中我有类似的变化:

    axios({
      method: "post",
      url: `/api/PlanetTime/Battle/${this.props.levelId}/files/upload`,
      data: bodyFormData,
      config: {
        headers: { "Content-Type": "multipart/form-data" }
      }
    })
      .then(response => {
        let newFile = response.data[response.data.length - 1];
        this.props.onUploadEnd(response.data);
        this.setState({
          selectedFile: null,
          file: null
        });
      })
      .catch(response => {
        console.log("upload error!");
      });
    

    有没有一种方法可以像这样调用AXIOS,但它更通用,这样我就可以接受不同的URL、数据等,并且仍然可以利用 然后 电话的一部分?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Andrew Li    6 年前

    axios axios.request

    function createRequest(url, data) {
      return axios({
        // Set up axios instance config
      });
    }
    

    createRequest('…', { … })
      .then(response => { … })
      .catch(error => { … });