ν΄λΌμ΄μΈνΈμμ μλ²λ‘ λΉλκΈ° λ°μ΄ν° μμ²
import React, { useEffect, useState } from 'react'
import Card from './Card'
const CardList = () => {
// Card μ»΄ν¬λνΈμ μ λ¬ν λ°μ΄ν°
// const cardData = [
// {
// no : 1,
// title: 'μλ©λ¦¬μΉ΄λ
Έ',
// content: 'μ½λ‘¬λΉμ μλλ‘ λ§λ ...',
// likes: 100,
// img: 'https://i.imgur.com/D1ic2Xk.jpg'
// },
// {
// no : 2,
// title: 'μΉ΄νλΌλΌ',
// content: 'λΌλΌλ λ§μ΄μΌ...',
// likes: 200,
// img: 'https://i.imgur.com/hAzIEVv.jpg'
// },
// {
// no : 3,
// title: 'μΏ ν€νλΌν',
// content: 'μ€λ μ€ λ€νλ€...',
// likes: 300,
// img: 'https://i.imgur.com/kDhIhLv.jpg'
// },
// ]
// β state μ μΈ
// π§ productList
const [productList, setProductList] = useState([])
// π λ°μ΄ν° μμ² ν¨μ
const getProductList = () => {
const response = fetch('http://localhost:8080/products')
.then(response => {
// μλ² μλ΅μ JSON νμμΌλ‘ νμ±
return response.json();
})
.then(data => {
// νμ±λ λ°μ΄ν° μΆλ ₯
console.log(data);
// β‘ μν μ
λ°μ΄νΈ
setProductList(data)
})
.catch(error => {
// μ€λ₯ μ²λ¦¬
console.error('Request failed:', error);
});
}
// β useEffect() ν
μ¬μ©
// "λ λλ§ μ νΈμΆ λλ ν¨μ"
// : ν¨μν μ»΄ν¬λνΈμμ λ§μ΄νΈ, μ
λ°μ΄νΈ, μΈλ§μ΄νΈ μλͺ
μ£ΌκΈ° μμ
μ
// μ²λ¦¬ν μ μλλ‘ ν΄μ£Όλ ν
useEffect(() => {
getProductList();
}, []);
return (
<div>
<h1>μν λͺ©λ‘</h1>
<div style={{
display: "flex",
}}>
{
productList.map( (card, index) => {
// cardData.map( (card, index) => {
// return <Card key={card.no} title={card.title} content={card.content} />
// return <Card key={card.no} {...card} />
return <Card key={card.no} card={ card } />
})
}
</div>
</div>
)
}
export default CardList
JavaScript
볡μ¬