1 回答

TA貢獻1876條經驗 獲得超5個贊
const res =await axios.get('http://localhost:5000/api/albums/all')
const {data}= await res;
setAlbum({...data,albums:res.data})
你能解釋一下嗎?為什么要等待資源,為什么要傳播數據并將其添加為專輯?
你可以編寫自己的鉤子。您還應該fetchApi在 useEffect 鉤子中聲明該函數,這就是它始終重新渲染的原因。
讓我們用你的代碼做一個自定義的鉤子
import axios from 'axios';
import React, { useEffect, useState } from 'react';
function useAlbums() {
const [albums, setAlbums] = useState([]);
useEffect(() => {
const fetchData = async () => {
try {
const { data } = await axios.get(
'http://localhost:5000/api/albums/all',
);
setAlbums(data);
console.log(albums);
} catch (err) {
console.log(err);
}
};
fetchData();
}, [albums]);
return [albums, setAlbums];
}
const Component = () => {
// use it in component
const [albums] = useAlbums();
return (
<>
{albums.map(({ _id }) => (
<div key={_id}>{'add more content here'}</div>
))}
</>
);
};
與
const [albums, setAlbums] = useAlbums();
希望這可以幫助!
添加回答
舉報