๋ค์ด๋ ์ฝ๋ ๋ฏธ๋ํ๋ก์ ํธ์ ๊ธฐ๋ฅ์ ์ข์์ ๋ฒํผ์ ํด๋ฆญํ์ ๋ ์ข์์ ๋ชฉ๋ก ํ์ด์ง์ ๋ค์ด๊ฐ ๋ณด๋ฉด ํด๋ฆญํ๋ ์ฅ์๋ฅผ ๋ชจ๋ ํ์ธ ํ ์ ์๋ค. ๊ทธ๋ ์ง๋ง setState๋ก ๋ณ๊ฒฝํ์ ๋๋ง ๋ฐ์ํ๋ ์๋ฌ๊ฐ ์์๋ค. ๊ทธ๊ฒ์ ๋ํด์ ๊ธฐ๋ก์ ํ์๋ฉด ..

//App.js
const place = data;
const [addPlace, setAddPlace] = useState([]);
App.js ํ์ผ์์ data์ ์ฅ๋์ด ์๋ ์นดํ ๋ชฉ๋ก๋ค์ place ๋ณ์์ ๋ด์์ฃผ์๊ณ , ๋ด๊ฐ ์ข์์ํ ๋ชฉ๋ก๋ค์ ํ์ธ ํ ์ ์๊ฒ addPlace์ ์ด๊ธฐ๊ฐ์ ๋น๋ฐฐ์ด๋ก ์ฃผ์๋ค. ๋ฌผ๋ก App.jsx ํ์ผ์์ ๋ง๋ state์ด๊ธฐ ๋๋ฌธ์ ํ์ํ ๊ณณ์๋ props๋ฅผ ๊ตฌ์กฐ๋ถํด๋ฌธ๋ฒ์ผ๋ก ๋ด๋ ค์ฃผ์๋ค.
//LikePage.jsx
const LikePage = ({ addPlace, navigate }) => {
return (
<Container>
<Title>
<img
src={mainlogo}
alt="๋ฉ์ธ๋ก๊ณ "
width="20%"
height="100%"
onClick={() => navigate("/")}
/>
</Title>
<LikePlace>
{addPlace.map((item, i) => (
<PlaceItem key={i}>
<img src={getCafeImage(item.id)} width="220px" alt={item.title} />
<h4>{item.title}</h4>
</PlaceItem>
))}
</LikePlace>
</Container>
);
};
export default LikePage;
getCafeImage๋ถํฐ ์ค๋ช
ํ์๋ฉด ์ด๋ฏธ์ง๋ฅผ ๋ฐ๋ก ํ์ผ๋ก ๋ถ๋ฆฌํด์ ๋ง๋ ํจ์์ด๋ค. ์ธ์์ item.id๋ฅผ ๋ฃ์ด์ค ์ด์ ๋ ํจ์๋ฅผ switch๋ฌธ์ผ๋ก ์์ฑํ๋๋ฐ cafeId์ case๊ฐ 1๋ฒ์ผ๋ 1๋ฒ์ ๋ง๋ ์นดํ์ด๋ฏธ์ง๋ฅผ ๋ณด์ฌ์ฃผ์ธ์ ! ์ด๋ฐ์์ผ๋ก ์์ฑํ๊ธฐ ๋๋ฌธ์ ์ด๋ฏธ์ง๊ฐ id์ ๋ฐ๋ผ์ ํ๋ฉด์ ์ ๋ํ๋๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค.
//Place.jsx
const Place = ({ place, addPlace, setAddPlace }) => {
const onClickAddPlace = (action) => {
const addItem = place.filter((placeItem) => placeItem.id === action.id);
if (addItem) {
setAddPlace([...addPlace, ...addItem]);
}
};
return (
//๋ค๋ฅธ ๋ถ๋ถ์ ์ฝ๋ ์๋ต๋จ
<LikeBtn
onClick={() =>
onClickAddPlace({
id: item.id,
title: item.title,
})
}
>
์ข์์
</LikeBtn>
);
};
์์ ์์ฑ๋ ์ฝ๋๋ ์์ ๋ ๋ถ๋ถ์ ์ฝ๋์ด๋ค. ์๋ ์์ฑ๋ ์ฝ๋๋ฅผ ์ดํด๋ณด๋ฉด ์ ์ค๋ฅ๊ฐ ๋ฌ๋ ์ง ํ์ธ ํ ์ ์๋ค.
<์ค๋ฅ ๋ถ๋ถ>
// ์๋ชป๋ ์์
onClick={
onClickAddPlace({
id: item.id,
title: item.title,
})
// ์ ์์๋ ์์
onClick={ () =>
onClickAddPlace({
id: item.id,
title: item.title,
})
onClick์์ ์์ฑํ์ ๋ ์ค์ํ๋ ๋ถ๋ถ์ด () => ์ด ์ฝ๋๋ฅผ ์ ์ง ์์์ ์๋ค. ์ด ์ฝ๋๋ฅผ onClick์์ ์ ๊ฒ๋๋ฉด ํด๋ฆญํ์ ๋๋ง ๋ด๊ฐ ์ธ์์์ ์ ์๋ ๋ถ๋ถ๋ค์ด ํจ์ ์กฐ๊ฑด์ ๋ง๊ฒ ์๋ํ๋ ๊ฒ์ ๋งํ๋ค. ํจ์์ ์ธ์๋ฅผ ๋ฃ์ด์ผ ๋๋ ์ํฉ์ด๋ผ๋ฉด () => ๊ผญ ์ ์ด์ฃผ๊ณ ๊ทธ๋ ์ง ์๋ค๋ฉด ํจ์๋ช
๋ง ์ ์ด์ค์ผ ํ๋ค !!!!!!
() => ์ ์ง ์์์ ๋, ํ ๋ง๋๋ก ์ค๋ช
ํ์๋ฉด onClickAddPlace() ํจ์ ํธ์ถ์ด๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ๊ทธ ์๋ฆฌ์์ ์คํ์ด ๋๋ค. ๋ด๊ฐ ํด๋ฆญ์ ํ๋ ์ง ์ ํ๋ ์ง๋ ์๊ด์์ด ํจ์๊ฐ ํธ์ถ๋๊ณ , setAddPlace์ ๊ฐ์ด ๊ณ์ ๋ฐ๋๋ฉด์ ๋ฆฌ๋ ๋๋ง ๋๊ธฐ ๋๋ฌธ์ ๋ฌดํ ๋ ๋๋ง์ด ๋์๋ ๊ฒ์ด๋ค.
ํจ์ ํธ์ถ ๋ฐฉ๋ฒ ๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋ฌ์๋ ๊ฒ์ด์๋ค ...
onClick ์ด๋ฒคํธ๋ฅผ ์ฌ์ฉํ ๋์๋ ์๋ ๋ฌธ๋ฒ์ ์ฌ์ฉํด์ผ๋ง ์ ์ ๋ ๋๋ง์ด ๋๋ค. ์ด ๋ ์ฝ๋๋ ๋๊ฐ์ด ์๋๋๊ธฐ ๋๋ฌธ์ ์ํฉ์ ๋ง๊ฒ ์ฌ์ฉํ๋ฉด ๋๋ค.
//onClick ๋ฌธ๋ฒ
onClick={() => ํจ์๋ช
()}
onClick={ํจ์๋ช
}
