(AppProduct.jsx)
import React, { useState } from 'react';
import './App.css';
import Products from './components/Products'
export default function AppProducts() {
const [showProducts, setShowProducts] = useState(true);
return (
<div>
{showProducts && <Products />}
<button onClick={()=>{setShowProducts((show) => !show)}}>Toggle</button>
</div>
);
}
(Product.jsx)
import React, { useEffect, useState } from 'react';
export default function Products() {
// const [count, setCount] = useState(0);
const [products, setProducts] = useState([]);
const [checked, setChecked] = useState(false);
const handleChange = ()=>{
setChecked((prev) => !prev);
}
useEffect(()=>{
fetch(`data/${checked ? 'sale_' : ''}products.json`)
.then((res) => res.json())
.then((data) => {
console.log("데이터 네트워크에서 받아옴")
setProducts(data);
console.log(data)
});
return ()=> {
console.log('청소')
}
}, [checked])
return (
<>
<input
id='checkbox'
onChange={handleChange}
value={checked}
type='checkbox'
/>
<label htmlFor='checkbox'>세일하는 상품만 보기</label>
<ul>
{products.map((product)=>{
return (
<li key={product.id}>
<article>
<h3>{product.name}</h3>
<p>{product.price}</p>
</article>
</li>
)
})}
</ul>
{/* <button onClick={()=>{ setCount(count + 1) }}>{count}</button> */}
</>
);
}
서버에서 그냥 상품 데이터와, 세일 상품 데이터를 checkbox에 따라 유동적으로 가져오는 코드를 짰다.