如何在单独的组件/文件中进行axios API调用?

0 javascript reactjs

如何在单独的组件/文件中进行axios API调用?

例:

我创建了包含要集成的组件的index.jsx文件,axios然后创建了该app.jsx文件以呈现文件中包含axios的index.jsx index.jsx文件。

之前感谢

Sak*_*oor 6

您可以api为所有API 创建一个单独的文件夹:

假设您有AuthenticationAPI,则必须执行以下操作:

AuthenticationAPI.js

import axios from 'axios';

export const onAuthenticate = payload => {
  const URL = `YOUR_URL`;
  return axios(URL, {
    method: 'POST/GET',
    headers: {
      'content-type': 'application/json', // whatever you want
    },
    data: payload,
  })
    .then(response => response.data)
    .catch(error => {
      throw error;
    });
};
Run Code Online (Sandbox Code Playgroud)

在您的App.js中

import * as AuthenticateAPI from 'api/AuthenticationAPI';

 // in your CDM
 componentDidMount(){
  AuthenticateAPI.onAuthenticate(payload).then((res)=>{ //any payload you want to send just for example
    you can get response here in then block
 }) 
 }
Run Code Online (Sandbox Code Playgroud)

这是为了基本示例。如果它变成可以使用Redux的必要性 ,否则不要滥用它

PS:Axios建立在可取消的承诺模式上。它具有中止控制器。简而言之,您可以取消任何待处理的网络呼叫,这是使用Observable的绝佳选择。有时,当您在正在进行的API请求之间导航到另一个页面时确实不需要数据时,取消API调用确实非常重要,因此数据无用,而AXIOS是唯一的救星。


Luk*_*ker 5

你可以导入functions/methods使用上飞export

创建一个 shared.js 文件。例如调用它:apicalls.js

在里面写你的函数:

apicalls.js

import axios from 'axios';

export function getData(config, callback, errorcallback){
    axios.get(url, config)
    .then(res => {
      //do something
      if(callback != null){
         callback(res);
      }
    })
    .catch(err => {
      // catch error
      if(errorcallback != null){
         errorcallback(err);
      }
    })
}
Run Code Online (Sandbox Code Playgroud)

在任何组件中,使用如下

// get the location of your apicalls.js file and use to import like below
import { getData } from '../../routetothisjsfile'


//use it 
var config = { "Access-Control-Allow-Origin": "*" }
getData(config, (res) => {
    //success
},(err) => {
    //error
    alert(err);
});
Run Code Online (Sandbox Code Playgroud)