react與fetch
JavaScript 中的 ajax 很早之前就有一個詬病————複雜業務下的 callback 巢狀的問題。promise 正是 js 中解決這一問題的鑰匙。
接下來我們在react專案中應用到的fetch 就用到了最新的 promise。
那我們如何在react專案中應用fetch呢?
第一步:安裝
用 npm 安裝的話,執行cnpm install whatwg-fetch --save即可安裝。
為了相容老版本瀏覽器,還需要安裝 es6-promise
第二步:在實際專案中的應用。
第一種get 使用。
首先要引入依賴的外掛,見./app/fetch/test.js中
然後這樣就可以發起一個 get 請求。
先看我們的./app/index.jsx檔案內容,他需要引用getData
這裡的fetch是引用了外掛之後即可用的方法,使用非常簡單。方法的第一個引數是 url 第二個引數是配置資訊。
fetch 方法請求資料,返回的是一個 Promise 物件。
歡迎進入前端全棧群:866109386,來交流討論吹水。
以上程式碼的配置中,credentials: 'include'表示跨域請求是可以帶cookie(fetch 跨域請求時預設不會帶 cookie,需要時得手動指定
credentials: 'include'。這和 XHR 的 withCredentials 一樣),headers可以設定 http 請求的頭部資訊。
第二種post使用
可以根據get請求的方法進行同理的引用外掛,在我們的./app/index.jsx中,我們需要引用
然後用 fetch 發起一個 post 請求(有method: 'POST'),第一個引數是 url,第二個引數是配置資訊。注意下面配置資訊中的headers和
body的格式。fetch 提交資料之後,返回的結果也是一個 Promise 物件,跟 get 方法一樣。
我們以上兩個用法中,返回的Promis物件不一樣,一個是res.text(),一個是res.json()。這兩個方法就是將返回的 Response 資料轉換成
字串或者JSON格式,這也是 js 中常用的兩種格式。
接下來我們要做的事情,其實是一個精簡工作。如果每次獲取資料,都向上面一樣寫好多程式碼,就太冗餘了,我們這裡將 get 和 post 兩個方法單獨抽象出來。
這兩個方法抽象之後,接下來我們再用,就變得相當簡單了。
第一步:提取公共部分
getjs部分
postjs提取部分
接下來看我們的./app/index.jsx檔案是如何應用的
接下來執行專案即可。
發現文章中的錯誤,或者有更好的建議,歡迎評論或進前端全棧群:866109386,來交流討論吹水。
相關文章
- Ajax與Fetch
- fetch_array()與fetch_assoc()的用法
- react-fetch資料傳送請求React
- React 快速上手 - 09 資料請求 fetchReact
- React 快速上手 – 09 資料請求 fetchReact
- react使用useeffect解決 一直呼叫 fetchReact
- React 解決fetch跨域請求時session失效React跨域Session
- react-解決 fetch 跨域問題:Access to fetch at XXX from origin YYY has been blocked by CORS policyReact跨域BloCCORS
- React Native探索(五)使用fetch進行網路請求React Native
- React中使用fetch實現檔案上傳下載React
- React Native 探索(五)使用 fetch 進行網路請求React Native
- React如何解決fetch跨域請求時session失效問題React跨域Session
- Ajax 之戰:XMLHttpRequest與Fetch API比較XMLHTTPAPI
- Fetch庫
- Ajax、fetch、axios的區別與優缺點iOS
- Fetch 入門
- JavaScript fetch介面JavaScript
- ajax,axios,fetchiOS
- Fetch API 教程API
- fetch 與引用規格(refspec)—— Git 學習筆記 23Git筆記
- 非同步請求與中斷 ( XHR,Axios,Fetch對比 )非同步iOS
- React Native 的未來與React HooksReact NativeHook
- Fetch 實現 abort
- Kafka Fetch Session剖析KafkaSession
- 遠端倉庫與 fetch 命令——Git 學習筆記 20Git筆記
- 非同步請求xhr、ajax、axios與fetch的區別比較非同步iOS
- 取消Fetch API請求API
- AJAX、$.ajax、axios、fetch、superagentiOS
- 從ajax到fetch、axiosiOS
- ajax、axios、fetch、jsonp、corsiOSJSONCORS
- ! [rejected] master -> master (fetch first)AST
- git fetch & pull詳解Git
- fetch簡明學習
- fetch學習總結
- fetch 如何處理 302?
- React 新手路(一):初識 React、JSX 與 元件ReactJS元件
- Vue與React比較VueReact
- React與Vue模板使用比較(一、vue模板與React JSX比較)ReactVueJS