在 ReactJS 中傳送 Http 請求


在本文中,我們將學習如何在 React 應用程式中傳送和接收 Http 響應。

要傳送或接收資料,我們不需要使用第三方包,而是可以使用 **fetch()** 方法,該方法現在已得到所有現代瀏覽器的支援。

傳送 GET 請求

https://jsonplaceholder.typicode.com/todos/1

**Jsonplaceholder** 是一個用於學習傳送請求過程的模擬 API。

示例

index.jsx

import React from "react";
import ReactDOM from "react-dom";
import { CookiesProvider } from "react-cookie";
import App from "./App";

ReactDOM.render(
   <CookiesProvider>
      <App />
   </CookiesProvider>,
   document.getElementById('root')
);

App.jsx

import React, { useEffect, useState } from 'react';
const App = () => {
   const [data, setData] = useState(null);
   const [fetchData, setFetch] = useState(false);

   useEffect(() => {
      if (fetchData) {
         fetch('https://jsonplaceholder.typicode.com/todos/1')
         .then((response) => response.json())
         .then((data) => setData(data.title));
      }
   }, [fetchData]);
   return (
      <>
         <h1>{data}</h1>
         <button onClick={() => setFetch(true)}>Fetch Data</button>
      </>
   );
};
export default App;

在上面的示例中,我們向 **jsonplaceholder** 傳送 GET 請求,並訪問將要插入狀態中的資料,一旦收到響應,該資料就會被插入狀態。

輸出

這將產生以下結果。

傳送 POST 請求

https://jsonplaceholder.typicode.com/todos/1

**Jsonplaceholder** 是一個用於學習傳送請求過程的模擬 API。

示例

index.jsx

import React from "react";
import ReactDOM from "react-dom";
import { CookiesProvider } from "react-cookie";
import App from "./App";

ReactDOM.render(
   <CookiesProvider>
      <App />
   </CookiesProvider>,
   document.getElementById('root')
);

App.jsx

import React, { useEffect, useState } from 'react';
import Input from './Input';
import './App.css';
const App = () => {
   const [data, setData] = useState(null);
   const [val, setVal] = useState('');
   const [fetchData, setFetch] = useState(false);

   useEffect(() => {
      if (fetchData) {
         const payload = {
            method: 'POST',
            body: JSON.stringify({ title: val }),
         };
         fetch('https://jsonplaceholder.typicode.com/posts', payload)
         .then((res) => res.json())
         .then((data) => setData(data.id));
      }
   }, [fetchData]);
   return (
      <>
         {data && <h1>Your data is saved with Id: {data}</h1>}
         <input
            placeholder="Title of Post"
            value={val}
            onChange={(e) => setVal(e.target.value)}
         />
         <button onClick={() => setFetch(true)}>Save Data</button>
      </>
   );
};
export default App;

在上面的示例中,我們向 **jsonplaceholder** 傳送 POST 請求,並在主體中使用輸入欄位值,並相應地顯示響應。

輸出

這將產生以下結果。

更新於: 2021年3月19日

912 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.