Swiper
ํ๋จ์ ๋นํํธ๋ฒํผ์ ๋๋ฅด๋ฉด ๋นจ๊ฐํํธ๋ก ๋ฐ๋๋ฉด์ ์ซ์๊ฐ ์ฌ๋ผ๊ฐ๋๋ก ํ๋ ๊ฐ๋จํ ๊ธฐ๋ฅ..
์ด๋ผ๊ณ ์๊ฐํ๋๋ฐ ์์ง๋ ๊ฐ๋จํ ๊ธฐ๋ฅ๋ ์ด๋ ต๊ฒ ๊ตฌํํด๋ด๋ ๊ฐ๋ฐ๋ณ์๋ฆฌ...
์ฒ์ ๊ธฐํ์ผ๋ก๋ ์ฌ์ฉ์์ ์๊ด์์ด ์๋ก๊ณ ์นจ์ ํ๋ฉด ์ํ๊ฐ ์ด๊ธฐํ๋๋ฉด์
๋๋ฅผ๋๋ง๋ค ์ซ์๋ ์๋ฒ์ ์ ์ฅ๋๋๋ก ํ๋ ค๊ณ ํ์๋ค.
ํ์ง๋ง ์ฌ์ฉ์๊ฐ ์ฌ์ฉํ๋ ๋๋ฐ์ด์ค๋ณ๋ก ํ๋ฒ๋ง ๊ฐ๋ฅํ ์ ์๋๋ก ์ฝ๋๋ฅผ ๋ฐ๊พธ๋ฉด์
localStorage
๋ผ๋๊ฑธ ์๊ฒ ๋์๋ค.
๊ฐ๋จํ๊ฒ ๋งํ๋ฉด,
๋ธ๋ผ์ฐ์ ์ ์ฅ์์ค์ ์น์คํ ๋ฆฌ์ง ์ค์ ํ๋์ธ localStorage
๋
ํํ ๋ก๊ทธ์ธ ์ ์ง ๊ธฐ๋ฅ์ฒ๋ผ, ๋ช
์์ ์ผ๋ก ์ญ์ ํด์ฃผ์ง ์๋ ์ด์
์ง์์ง์ง ์๋ ๋ฐ์ดํฐ๋ค์ ์ ์ฅํ๋ ๊ณต๊ฐ์ ๋งํ๋ค.
๋ ์์ธํ๊ฑด ๋ฐ๋ก ํฌ์คํ
ํด๋ณด๊ธฐ๋ก..!
Mainpage
์์ props๋ก Like
์ปดํฌ๋ํธ์ ์๋ฒ์ ์๋ likes
๊ฐ์ ๋๊ฒจ์ค์ ๊ฐฏ์๋ฅผ ํ์Like
์ปดํฌ๋ํธ์์ ์ํ๊ฐ์ like
๋ก ์ค์ ํ๊ณ , localStorage
์๋ flag
๊ฐ์ ์ค์ const flag = localStorage.getItem("like_flag");
onClick
ํจ์๊ฐ ๋ฐ์ํ๋ฉด์, ์๋ฒ ์ํ๊ฐ์ด 200์ด ๋๋ฉด ์๋ฒ์ ๊ฐฏ์๊ฐ ์ถ๊ฐ๊ฐ ๋๊ณ , ํํธ๊ฐ ๋นจ๊ฐ์์ผ๋ก ์ฑ์์ง๊ฒ ๋๋ค. const handleClick = (): void => {
if (like) return;
setLike(true);
dispatch(addLike());
fetch("์๋ฒ์ฃผ์/addLike", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
postId: "",
}),
})
.then((response) => response.json())
.then((json) => {
console.log(json);
if (json.status === 200) {
dispatch(addLike());
}
});
};
โญ๏ธ ์ฌ๊ธฐ์ ๋ง๊ฐ์ผ๋ก dispatch์ ๋ํด !
redux๋ฅผ ์ธ์ ์ ๋ฆฌํด์ผํ ์ง ๋ชฐ๋ผ์ ์์ง ์ ๋ฆฌ๋ฅผ ๋ชปํ๋๋ฐ,,
์ ์ฝ๋์์ ์ฌ์ฉ๋dispatch
๋
๋ฏธ๋ฆฌonClick
ํจ์ ๋ฐ์์useDispatch()
๋ก ๋ง๋ค์ด์ง๊ณ ,
modules์reducer
๋ก ์์ฑํ ์ผ์ด์ค์์addLike
ํจ์๋ฅผ ๋ฐ์์์ผ์
์ซ์๋ฅผ ์ ๋ฐ์ดํธ ํ ์ ์๊ฒ ํด์ฃผ๋ ํจ์์ด๋ค.
์ด ์์
์ ํ๋ฉด์ ์ฌ์ฉ์๊ฒฝํ์ ๋ํด์ ๋ ๋ฐฐ์ฐ๊ฒ ๋ ๊ฒ ๊ฐ๋ค.
ํํธ๋ฅผ ๋๋ฅด๋ ์ก์
์ ์ทจํ ํ์๋,
๊ทธ ๊ฐ์ด ์๋ฒ์ ์ ์์ ์ผ๋ก ์ฌ๋ผ๊ฐ ํ์์ผ ์ ์ฉ์ด ๋์ด์ view๊ฐ ๋ณํ๋ค ๋ณด๋
๊ทธ ํ์์ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ด ์๊ธฐ๊ฒ ๋์๋ค.
๊ทธ๋์ ์๋ฒ์ ์ฌ๋ผ๊ฐ๊ธฐ ์ด์ ์ ์ผ๋จ view๋ฅผ ๋ฐ๊ฟ์ค ํ
์๋ฒ์ ๊ฐ์ ์ ์ฅํ๋ ์ฝ๋๋ก ๋ฐ๊พธ๊ธฐ๋ก ํ๋ค.
const handleClick = (): void => {
if (like && flag) return;
dispatch(addLike());
setLike(true);
fetch("์๋ฒ์ฃผ์/addLike", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
postId: "",
}),
});
};
์ด๋ ๊ฒ ์์ฑํ๋ฉด,
ํํธ๋ฅผ ํด๋ฆญํ๋ฉด ์ฐ์ ํํธ์ด๋ฏธ์ง ๋ณ๋, ์ซ์ ๋ํด์ง๋ view๊ฐ ๋ฐ๋๊ณ
๋ณด์ด์ง ์๋ ์๋ฒ์์๋ ์ด์ ์ข์์ ์ซ์์ +1์ด ๋๋ ์ค..์ธ ๋ชจ์์ผ๋ก ๋ง๋ค ์ ์๋ค(?)
๋ค์์ ์๊ฐ์ด ๋๋ฉด ์ธ์คํ๊ทธ๋จ์ฒ๋ผ ๋ฒํผ์ ๋๋ฅด๋ฉด ์ฌ์ง์ ํํธ๊ฐ ํ์๋์๋ค๊ฐ
์ฌ๋ผ์ง๋ ์ ๋๋ฉ์ด์
๋ ๋ฃ์ด๋ณด๊ณ ์ถ๋ค :)
๋๋ถ์ ๊ตฌํํ ์ ์์์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค :)