關(guān)于React Native使用axios進(jìn)行網(wǎng)絡(luò)請(qǐng)求的方法
在前端開(kāi)發(fā)中,能夠完成數(shù)據(jù)請(qǐng)求的方式有很多,如Ajax、jQuery ajax、axios和fetch等。不過(guò),隨著技術(shù)的發(fā)展,現(xiàn)在能夠看到的基本上也就axios和fetch兩種。
axios是一個(gè)基于Promise的Http網(wǎng)絡(luò)庫(kù),可運(yùn)行在瀏覽器端和Node.js中,Vue應(yīng)用的網(wǎng)絡(luò)請(qǐng)求基本都是使用它完成的。axios有很多優(yōu)秀的特性,如支持請(qǐng)求的攔截和響應(yīng)、取消請(qǐng)求、JSON自動(dòng)轉(zhuǎn)換、客戶端防御XSRF等。
使用axios之前,需要先在項(xiàng)目中安裝axios插件,安裝命令如下。
//npm npm install axios --save //yarn yarn add react-native-axios
作為一款優(yōu)秀的網(wǎng)絡(luò)請(qǐng)求庫(kù),axios支持基本的GET、POST、DELET和PUT等請(qǐng)求。比如,使用axios進(jìn)行GET請(qǐng)求時(shí)就可以使用axios.get()方法和使用axios(config { … })兩種方式,如下所示。
axios.get('/getData', { params: { id: 123 } }).then(function (response) { console.log(response); }) axios({ method: 'GET', url: '/getData', params: { id: 123, } }).then(function (response) { console.log(response); });
可以看到,如果直接使用axios進(jìn)行網(wǎng)絡(luò)請(qǐng)求會(huì)產(chǎn)生大量的冗余代碼,所以在實(shí)際開(kāi)發(fā)過(guò)程中,還需要對(duì)axios請(qǐng)求進(jìn)行一些封裝,以方便后期的使用,如下所示。
可以看到,如果直接使用axios進(jìn)行網(wǎng)絡(luò)請(qǐng)求會(huì)產(chǎn)生大量的冗余代碼,所以在實(shí)際開(kāi)發(fā)過(guò)程中,還需要對(duì)axios請(qǐng)求進(jìn)行一些封裝,以方便后期的使用,如下所示。
const request = axios.create({ transformResponse: [ function (data) { return data; }, ], }); const defaultOptions = { //處理默認(rèn)配置 url: '', userAgent: 'BIZSTREAM Library', authentication: { integration: { access_token: undefined, }, }, }; class Bizstream { init(options) { this.configuration = {...defaultOptions, ...options}; this.base_url = this.configuration.url; this.root_path = ''; } post(path, params, data, type = ADMIN_TYPE) { return this.send(path, 'POST', params, data, type); } get(path, params, data, type = ADMIN_TYPE) { return this.send(path, 'GET', params, data, type); } send(path, method, params, data, type, headersOption) { const url = `${this.base_url}${this.root_path}${path}`; const headers = { 'User-Agent': this.configuration.userAgent, 'Content-Type': 'application/json', ...headersOption, }; return new Promise((resolve, reject) => { request({url, method, headers, params, data}).then(response => { …. //處理返回結(jié)果 }); }); } } export const bizStream = new Bizstream();
經(jīng)過(guò)封裝處理后,進(jìn)行網(wǎng)絡(luò)請(qǐng)求的時(shí)候就方便了許多,并且對(duì)于一些通用的返回結(jié)果我們也在網(wǎng)絡(luò)層進(jìn)行了處理。實(shí)際使用時(shí),開(kāi)發(fā)者只需要按照要求傳入需要的參數(shù),然后再通過(guò)異步函數(shù)處理返回的結(jié)果即可,如下所示。
//GET請(qǐng)求 const hotMovie=''; const data = await apiRequest.get(hotMovie); //POST請(qǐng)求 let baseUrl = ''; let param = { pageNumber: 0, cityCd: 31, }; const data = await apiRequest.post(baseUrl, param);
到此這篇關(guān)于關(guān)于React Native使用axios進(jìn)行網(wǎng)絡(luò)請(qǐng)求的方法的文章就介紹到這了,更多相關(guān)React Native網(wǎng)絡(luò)請(qǐng)求內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 詳解React Native與IOS端之間的交互
- iOS端React Native差異化增量更新的實(shí)現(xiàn)方法
- React Native中NavigatorIOS組件的簡(jiǎn)單使用詳解
- React-Native 橋接iOS原生開(kāi)發(fā)詳解
- react-native組件中NavigatorIOS和ListView結(jié)合使用的方法
- ios原生和react-native各種交互的示例代碼
- React Native第三方平臺(tái)分享的實(shí)例(Android,IOS雙平臺(tái))
- React Native 集成 iOS 原生功能(打印機(jī)功能為例)
相關(guān)文章
React?Native性能優(yōu)化紅寶書(shū)方案詳解
React?Native?是Facebook在React.js?Conf2015推出的開(kāi)源框架,使用React和應(yīng)用平臺(tái)的原生功能來(lái)構(gòu)建Android和iOS應(yīng)用,這篇文章主要介紹了React?Native性能優(yōu)化紅寶書(shū),需要的朋友可以參考下2024-06-06使用React?Hooks模擬生命周期的實(shí)現(xiàn)方法
這篇文章主要介紹了使用React?Hooks模擬生命周期,本文舉例說(shuō)明如何使用 hooks 來(lái)模擬比較常見(jiàn)的 class 組件生命周期,需要的朋友可以參考下2023-02-02React?SSR架構(gòu)Streaming?Render與Selective?Hydration解析
這篇文章主要為大家介紹了React?SSR架構(gòu)Streaming?Render與Selective?Hydration解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03React如何實(shí)現(xiàn)視頻旋轉(zhuǎn)縮放
這篇文章主要為大家詳細(xì)介紹了React如何實(shí)現(xiàn)視頻旋轉(zhuǎn)縮放功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-11-11React Native Popup實(shí)現(xiàn)示例
本文主要介紹了React Native Popup實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05React Fiber樹(shù)的構(gòu)建和替換過(guò)程講解
React Fiber樹(shù)的創(chuàng)建和替換過(guò)程運(yùn)用了雙緩存技術(shù),直接將舊的 fiber 樹(shù)替換成新的 fiber 樹(shù),這樣做的好處是省去了直接在頁(yè)面上渲染時(shí)的計(jì)算時(shí)間,避免計(jì)算量大導(dǎo)致的白屏、卡頓,現(xiàn)在你一定還不太理解,下面進(jìn)行詳細(xì)講解,需要的朋友可以參考下2022-12-12React跨路由組件動(dòng)畫(huà)實(shí)現(xiàn)
在 React 中路由之前的切換動(dòng)畫(huà)可以使用 react-transition-group 來(lái)實(shí)現(xiàn),但對(duì)于不同路由上的組件如何做到動(dòng)畫(huà)過(guò)渡是個(gè)很大的難題,目前社區(qū)中也沒(méi)有一個(gè)成熟的方案,本文給大家分享React跨路由組件動(dòng)畫(huà)實(shí)現(xiàn),感興趣的朋友一起看看吧2023-10-10react組件的創(chuàng)建與更新實(shí)現(xiàn)流程詳解
React組件分為函數(shù)組件與class組件;函數(shù)組件是無(wú)狀態(tài)組件,class稱(chēng)為類(lèi)組件;函數(shù)組件只有props,沒(méi)有自己的私有數(shù)據(jù)和生命周期函數(shù);class組件有自己私有數(shù)據(jù)(this.state)和生命周期函數(shù)2022-10-10