Pengambilan data adalah asas dalam aplikasi React, menjanakan fungsi seperti memuatkan data pengguna, memaparkan kandungan secara dinamik dan banyak lagi. React menawarkan ekosistem yang fleksibel untuk pengendalian data, dengan pelbagai perpustakaan dan pendekatan untuk dipilih bergantung pada kerumitan dan keperluan prestasi apl anda. Dalam artikel ini, kami akan meneroka beberapa kaedah utama untuk pengambilan data dalam React, termasuk API Ambil, Axios, Async/Await, React Query, SWR dan GraphQL.
API Ambil ialah API web terbina dalam yang menjadikan permintaan rangkaian lebih mudah dan disokong secara meluas oleh penyemak imbas moden. Ia mengembalikan Janji yang diselesaikan dengan objek Respons yang mewakili data daripada permintaan API.
import React, { useEffect, useState } from 'react'; const FetchExample = () => { const [data, setData] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { const fetchData = async () => { try { const response = await fetch('https://jsonplaceholder.typicode.com/posts'); if (!response.ok) throw new Error('Network response was not ok'); const data = await response.json(); setData(data); } catch (error) { setError(error.message); } finally { setLoading(false); } }; fetchData(); }, []); return ( <div> {loading ? <p>Loading...</p> : data.map((item) => <p key={item.id}>{item.title}</p>)} {error && <p>Error: {error}</p>} </div> ); };
Axios ialah klien HTTP berasaskan janji untuk penyemak imbas dan Node.js yang menawarkan lebih banyak ciri daripada API Ambil, seperti pemintas permintaan dan tindak balas serta keupayaan untuk mengubah permintaan dan respons.
import React, { useEffect, useState } from 'react'; import axios from 'axios'; const AxiosExample = () => { const [data, setData] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { axios .get('https://jsonplaceholder.typicode.com/posts') .then((response) => { setData(response.data); setLoading(false); }) .catch((error) => { setError(error.message); setLoading(false); }); }, []); return ( <div> {loading ? <p>Loading...</p> : data.map((item) => <p key={item.id}>{item.title}</p>)} {error && <p>Error: {error}</p>} </div> ); };
Dengan tak segerak dan menunggu, pengendalian kod tak segerak dalam JavaScript menjadi lebih bersih. Kedua-dua API Ambil dan Axios boleh digunakan dengan sintaks async/menunggu untuk menjadikan kod lebih mudah dibaca.
const fetchData = async () => { try { const response = await fetch('https://jsonplaceholder.typicode.com/posts'); const data = await response.json(); setData(data); } catch (error) { console.error('Error fetching data:', error); } };
React Query mengendalikan caching, penyegerakan dan kemas kini keadaan pelayan, membolehkan anda mengambil, mengemas kini dan cache data dengan mudah. Cache data automatik React Query dan pengambilan semula menjadikannya pilihan popular untuk aplikasi yang kompleks.
import React, { useEffect, useState } from 'react'; const FetchExample = () => { const [data, setData] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { const fetchData = async () => { try { const response = await fetch('https://jsonplaceholder.typicode.com/posts'); if (!response.ok) throw new Error('Network response was not ok'); const data = await response.json(); setData(data); } catch (error) { setError(error.message); } finally { setLoading(false); } }; fetchData(); }, []); return ( <div> {loading ? <p>Loading...</p> : data.map((item) => <p key={item.id}>{item.title}</p>)} {error && <p>Error: {error}</p>} </div> ); };
SWR ialah satu lagi pustaka pengambilan data yang mengutamakan strategi cache dan pengesahan semula. Dibangunkan oleh Vercel, SWR memastikan data sentiasa segar dengan mengambilnya semula secara automatik di latar belakang apabila pengguna melawat semula halaman tersebut.
import React, { useEffect, useState } from 'react'; import axios from 'axios'; const AxiosExample = () => { const [data, setData] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { axios .get('https://jsonplaceholder.typicode.com/posts') .then((response) => { setData(response.data); setLoading(false); }) .catch((error) => { setError(error.message); setLoading(false); }); }, []); return ( <div> {loading ? <p>Loading...</p> : data.map((item) => <p key={item.id}>{item.title}</p>)} {error && <p>Error: {error}</p>} </div> ); };
GraphQL ialah bahasa pertanyaan untuk API yang memberikan lebih kawalan ke atas data yang dikembalikan. Ia membolehkan anda mengambil hanya medan yang anda perlukan, yang boleh meningkatkan prestasi dengan mengurangkan pengambilan berlebihan atau kurang pengambilan.
Untuk bermula dengan Apollo Client, pasangkannya dengan menjalankan npm install @apollo/client graphql.
const fetchData = async () => { try { const response = await fetch('https://jsonplaceholder.typicode.com/posts'); const data = await response.json(); setData(data); } catch (error) { console.error('Error fetching data:', error); } };
Memilih kaedah yang betul untuk pengambilan data dalam React bergantung pada kerumitan projek anda, keperluan prestasi dan keutamaan anda untuk perpustakaan dan alatan. Berikut ialah ringkasan ringkas:
Atas ialah kandungan terperinci Pengambilan Data dalam React. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!