Rumah >hujung hadapan web >tutorial js >Menggunakan useEffect untuk Mengambil Data dalam React
Dalam React, cangkuk useEffect biasanya digunakan untuk melakukan kesan sampingan dalam komponen berfungsi. Mengambil data daripada API atau pelayan ialah salah satu kesan sampingan yang paling biasa, dan useEffect memudahkan untuk mengurus pengambilan data dalam komponen anda. Di bawah ialah penjelasan terperinci dan contoh cara menggunakan useEffect untuk mengambil data dalam komponen berfungsi React.
Untuk mengambil data dengan useEffect, anda biasanya menggunakan corak berikut:
Berikut ialah contoh yang menunjukkan cara untuk mengambil data daripada API menggunakan useEffect dan useState:
import React, { useState, useEffect } from 'react'; const DataFetchingComponent = () => { // State variables to store data, loading status, and errors const [data, setData] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); // Using useEffect to fetch data useEffect(() => { // Define the function for fetching data const fetchData = async () => { try { // Start by setting loading state to true setLoading(true); // Make the fetch request const response = await fetch('https://api.example.com/data'); // Check if the response is ok (status code 200-299) if (!response.ok) { throw new Error('Network response was not ok'); } // Parse the JSON data const result = await response.json(); // Update the state with the fetched data setData(result); } catch (error) { // Handle errors and set the error state setError(error.message); } finally { // Set loading to false once the request is complete setLoading(false); } }; // Call the fetchData function fetchData(); }, []); // Empty dependency array means this effect runs once when the component mounts // Conditionally render the UI based on loading, error, and data if (loading) { return <div>Loading...</div>; } if (error) { return <div>Error: {error}</div>; } return ( <div> <h1>Data Fetching Example</h1> <ul> {data.map(item => ( <li key={item.id}>{item.name}</li> ))} </ul> </div> ); }; export default DataFetchingComponent;
Pembolehubah Keadaan:
useEffect Hook:
Pemuatan dan Pengendalian Ralat:
Fungsi Async dalam useEffect:
Susun Kebergantungan Kosong ([]):
Pengendalian Ralat:
Pengurusan Negeri:
Kadangkala, anda mungkin tidak mahu mengambil data apabila komponen dipasang tetapi berdasarkan interaksi pengguna, seperti mengklik butang. Dalam kes ini, anda boleh mencetuskan useEffect dengan mengemas kini pembolehubah keadaan daripada pengendali acara.
import React, { useState, useEffect } from 'react'; const DataFetchingComponent = () => { // State variables to store data, loading status, and errors const [data, setData] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); // Using useEffect to fetch data useEffect(() => { // Define the function for fetching data const fetchData = async () => { try { // Start by setting loading state to true setLoading(true); // Make the fetch request const response = await fetch('https://api.example.com/data'); // Check if the response is ok (status code 200-299) if (!response.ok) { throw new Error('Network response was not ok'); } // Parse the JSON data const result = await response.json(); // Update the state with the fetched data setData(result); } catch (error) { // Handle errors and set the error state setError(error.message); } finally { // Set loading to false once the request is complete setLoading(false); } }; // Call the fetchData function fetchData(); }, []); // Empty dependency array means this effect runs once when the component mounts // Conditionally render the UI based on loading, error, and data if (loading) { return <div>Loading...</div>; } if (error) { return <div>Error: {error}</div>; } return ( <div> <h1>Data Fetching Example</h1> <ul> {data.map(item => ( <li key={item.id}>{item.name}</li> ))} </ul> </div> ); }; export default DataFetchingComponent;
Dalam contoh ini:
Menggunakan useEffect untuk mengambil data dalam React ialah cara yang cekap dan bersih untuk mengurus kesan sampingan. Dengan menggabungkannya dengan useState, anda boleh mengurus pengambilan data, keadaan pemuatan dan pengendalian ralat dalam komponen berfungsi anda. Sentiasa ingat untuk mengendalikan ralat dan kes tepi untuk memastikan apl anda memberikan pengalaman pengguna yang baik.
Atas ialah kandungan terperinci Menggunakan useEffect untuk Mengambil Data dalam React. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!