๐ Trouble Shooting
1. ์๋ก๊ณ ์นจ ์ ๋ก๊ทธ์์ ๋ฌธ์
- ๋ฌธ์ : ์๋ก๊ณ ์นจํ๋ฉด ๋ก๊ทธ์ธ ์ ๋ณด๊ฐ ์ด๊ธฐํ๋์ด ๋ก๊ทธ์ธ ํ์ด์ง๋ก ์ด๋.
- ์์ธ: ํด๋ผ์ด์ธํธ์ Zustand ์ํ๊ฐ ์ด๊ธฐํ๋์ด user ๊ฐ์ด null๋ก ์ค์ .
- ํด๊ฒฐ ๋ฐฉ๋ฒ:
- Zustand ์ํ๋ฅผ ํ์ธํ๊ณ supabase.auth.getSession()์ผ๋ก ์ธ์ ์ ๋ณด๋ฅผ ์ฒดํฌ.
- useEffect์ ์กฐ๊ฑด์ ์ถ๊ฐํ์ฌ ์ด๋ฏธ user๊ฐ ์๋ ๊ฒฝ์ฐ ์ธ์
ํ์ธ์ ๊ฑด๋๋ฐ๋๋ก ์์
useEffect(() => {
const checkSession = async () => {
if (user) {
setIsPending(false)
return
}
const { data, error } = await supabase.auth.getSession()
if (error || !data.session) {
router.push('/auth/login')
return
}
setIsPending(false)
}
checkSession()
}, [router, user])
2. ์ ์ ์ํ์ ์ฝ์ ์ถ๋ ฅ ๋ถ์ผ์น
- ๋ฌธ์ : console.log(user)๋ null์ ์ถ๋ ฅํ์ง๋ง, ๋ธ๋ผ์ฐ์ ์ฝ์์์๋ ์ ์ ์ ๋ณด๊ฐ ํ์๋จ.
- ์์ธ: ๋ธ๋ผ์ฐ์ ์ฝ์๊ณผ ์ํ ์ ๋ฐ์ดํธ ํ์ด๋ฐ์ ์ฐจ์ด.
- ํด๊ฒฐ ๋ฐฉ๋ฒ: Zustand์ user ์ํ์ supabase.auth.getSession()์ ๋๊ธฐํํ์ฌ ์ด๊ธฐ ๋ก๋ฉ์ ์ ํํ ์ฒ๋ฆฌ.
3. ๋ถ๋งํฌ ์ํ ์ ์ง ๋ฌธ์
- ๋ฌธ์ : ์๋ก๊ณ ์นจ ํ ๋ถ๋งํฌ๊ฐ ์ ๋๋ก ๋ฐ์๋์ง ์์.
- ์์ธ: post.isBookmarked ๊ฐ์ ์ด๊ธฐ ์ํ์์ ํ์ธํ์ง ๋ชปํจ.
- ํด๊ฒฐ ๋ฐฉ๋ฒ:
- supabase์์ ๋ถ๋งํฌ ์ํ๋ฅผ ๊ฐ์ ธ์ค๊ณ post ๋ฐ์ดํฐ์ ํฌํจ.
const parsedPosts = postData.map((post) => ({
...post,
isBookmarked: post.bookmarks.some(
(bookmark) => bookmark.user_id === user.id,
),
}))
4. ๋ง์ง๋ง ์นด๋ ํ์ต ์๋ฃ ์ ์๋ฟ ์ฒ๋ฆฌ
- ๋ฌธ์ : ์นด๋ ํ์ต ์๋ฃ ํ ์๋ฆผ(Swal.fire)์ด ์ ์์ ์ผ๋ก ๋จ์ง ์์.
- ์์ธ: ๋ง์ง๋ง ์นด๋์ ์ํ ์ ๋ฐ์ดํธ๊ฐ ๋น๋๊ธฐ์ ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ฆผ์ด ํ์๋์ง ์์.
const goToNextCard = async () => {
if (currentIndex < totalCards - 1) {
setCurrentIndex(currentIndex + 1)
setIsFlipped(false)
} else {
await Swal.fire({
title: '๐ ํ์ต ์๋ฃ!',
text: '๋ชจ๋ ์นด๋๋ฅผ ํ์ตํ์
จ์ต๋๋ค!',
icon: 'success',
confirmButtonText: 'ํ์ธ',
})
router.push('/learning')
}
}
6. ํ์ ์คํฌ๋ฆฝํธ์ ํ์ ์ค๋ฅ
- ๋ฌธ์ : postData.map์์ ๋นจ๊ฐ ๋ฐ์ค ๋ฐ์.
- ์์ธ: postData์ ํ์ ์ ๋ช ์์ ์ผ๋ก ์ค์ ํ์ง ์์ ๋ฐ์.
=>์ ํ๋ฉด์์๋ ๋นจ๊ฐ๋ฐ์ค์ด ๋จ๋๋ฐ ๋ค๋ฅธ ๋ถ์ด ํด๋ก ๋ฐ์์ ํ์ธํด๋ณธ ๊ฒฐ๊ณผ, ์๋ธ..
7. ํ์ด์ง ์ด๋ ์ ์ฌ์ฉ์ ์ธ์ ์ฒดํฌ
- ๋ฌธ์ : ์ธ์ ์ด ์์ ๋ ์๋์ผ๋ก ๋ก๊ทธ์ธ ํ์ด์ง๋ก ์ด๋ํ์ง ์์.
- ํด๊ฒฐ ๋ฐฉ๋ฒ:
- useEffect๋ฅผ ํ์ฉํ์ฌ ์ฌ์ฉ์ ์ธ์ ์ฒดํฌ ํ ์์ ๊ฒฝ์ฐ ๋ก๊ทธ์ธ ํ์ด์ง๋ก ์ด๋ํ๋๋ก ์ถ๊ฐ
useEffect(() => {
const checkSession = async () => {
const { data, error } = await supabase.auth.getSession()
if (error || !data.session) {
router.push('/auth/login')
}
}
checkSession()
}, [router])