如何在单独的组件/文件中进行axios API调用?
例:
我创建了包含要集成的组件的index.jsx文件,axios然后创建了该app.jsx文件以呈现文件中包含axios的index.jsx index.jsx文件。
之前感谢
您可以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是唯一的救星。
你可以导入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)
| 归档时间: |
|
| 查看次数: |
3220 次 |
| 最近记录: |