ํ์ด์ง๋ค์ด์ ์ด๋ ์์ฒ๋ผ ์๋ง์ ๊ฒ์๊ธ์ ์ฌ๋ฌ๊ฐ์ ํ์ด์ง๋ก ๋๋์ด์ ๋ณด์ฌ์ฃผ๋ ๋ฐฉ์์ด๋ค. ์ฐ๋ฆฌ๋ ๊ธฐ์กด ๊ฒ์๊ธ ๋ชฉ๋ก์ ๊ฐ์ง๊ณ ์์ ์๋ ์ซ์ ๋ถ๋ถ๋ง ๋ง๋ค์ด์ฃผ๋ฉด ๋๋ค.
ํ์ด์ง๋ค์ด์ ์ ๊ตฌํํ๋ ค๋ฉด ํ์ด์ง ๋ฒํธ๋ฅผ ๋๋ฅผ๋๋ง๋ค ํด๋นํ๋ ๊ฐ๊ฐ์ ํ์ด์ง๋ฅผ ๋ฆฌํจ์น ํด์ฃผ๋ฉด ๋๋ค.
ํ์ด์ง๋ค์ด์
์ ๋ง๋ค๊ธฐ ์ ์ ์ฐ์ API-DOCS๋ฅผ ๋ณด์.
์ฌ๊ธฐ ์ด page ๊ฐ์ผ๋ก ํด๋น ํ์ด์ง์ ๊ฒ์๊ธ ๋ชฉ๋ก์ ๋ฆฌํจ์น ํด์ค๋ ๊ฒ์ด๋ค.
์ฟผ๋ฆฌ๋ฌธ์ ์์ฑํ ๋ ์์ page์ ๊ดํ ๋ถ๋ถ์ ๋ฃ์ด์ค์ผ ํ๋ค.
1. ๋ฐ์ดํฐ๋ฅผ fetch ํ ๋ refetch
๋ ๊ฐ๋ฅํ๋๋ก ๊ฐ์ด ๋ถ๋ฌ์จ๋ค.
2. ํ์ด์ง ๋ฒํธ๋ฅผ ํด๋ฆญํ ๋๋ง๋ค ์๋ก ๊ฐ์ ธ์ค๋๋ก ํ์ด์ง๋ฅผ ํด๋ฆญํ๋ ํจ์(onClickPage
)์ ๋ฆฌํจ์น๋ฅผ ๋ฃ์ด์ค๋ค.
๊ทธ๋ผ ํ์ด์ง ๋ฒํธ๋ฅผ ํด๋ฆญํ ๋ ๋ง๋ค data๊ฐ ๋ค์ ๋ถ๋ ค์ค๊ฒ ๋๊ณ ์ด ๋ฐ์ดํฐ๋ก ํ์ด์ง๋ฅผ ๋ค์ ๊ทธ๋ ค์ค๋ค.
์ด๋ event.target.id
๋ string ํ์
์ด๋ฏ๋ก Number๋ก ๊ฐ์ธ์ค๋ค.
๊ทธ๋ฐ๋ฐ ์ด๋ ํ์ด์ง ์๊ฐ ๋งค์ฐ ๋ง์์ง๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น?
3. ์์ ๋ฐฉ๋ฒ์ผ๋ก ์ผ๋จ 10๊ฐ์ ํ์ด์ง๋ค์ด์ ์ ๋ง๋ค ์ ์๋ค.
์ด์ ๋ค์ํ์ด์ง
์ ์ด์ ํ์ด์ง
๋ ๋ง๋ค์ด์ฃผ์.
4. ์ฐ์ ๊ธฐ์คํ์ด์ง๋ฅผ ํ๋ ์ก์์ค๋ค.
๊ธฐ์คํ์ด์ง๋ ์์ํ์ด์ง๋ก ์ก์๋ค.
const [startPage, setStartPage] = useState(1)
5. ๋ค์ํ์ด์ง
์ ์ด์ ํ์ด์ง
๋ฅผ ์ํ ํจ์๋ฅผ ๋ง๋ค์ด ์ค๋ค.
ํ์ง๋ง ์ด๋ ๊ฒ ํ๊ฒ ๋๋ฉด ๋๊ฐ์ ๋ฌธ์ ์ ์ด ๋ํ๋๋ค.
[Problem1.] 1ํ์ด์ง์์ ์ด์ ์ ๋๋ฅด๋ฉด ์์ ํ์ด์ง๊ฐ ๋์จ๋ค.
[Problem2.] ํ์ด์ง๊ฐ ์๋๋ฐ ๋ค์ํ์ด์ง๊ฐ ๊ณ์ ์๊ธด๋ค.
1ํ์ด์ง์์ ์ด์ ์ ๋๋ฅด๋ฉด ์์ ํ์ด์ง๊ฐ ๋์ค๊ธฐ ๋๋ฌธ์ ๋ค์์ ๋ก์ง์ ์ถ๊ฐํด์ผํ๋ค.
lastPage๋ ๊ธ๊ฐฏ์ / 10
ํ ๋ค ์์ซ์ ๋ท์๋ฆฌ๊ฐ ํ๋๋ผ๋ ์์ผ๋ฉด ์ฌ๋ฆผ
ํด์ฃผ๋ ๋ก์ง์ผ๋ก ๊ตฌํ ์ ์๋ค.
const {data:dataBoardsCount} = useQuery(FETCH_BOARDS_COUNT)
const lastPage = Math.ceil(dataBoarsCount?.fetchBoardsCount / 10)
ํ์ ์ปดํฌ๋ํธ๋ค ๋ผ๋ฆฌ๋ state
๋ฅผ ์ด๋ป๊ฒ ์ฃผ๊ณ ๋ฐ์ ์ ์์๊น
๋ฆฌ์กํธ์์๋ ๋ฐ์ดํฐ์ ํ๋ฆ์ด ๋จ๋ฐฉํฅ์ด๊ธฐ ๋๋ฌธ์ ์์์ด ์์์๊ฒ ๋ณด๋ด์ฃผ๊ฑฐ๋ ์์์ด ๋ถ๋ชจ์๊ฒ ์ฃผ๋๊ฒ๋ ๋ถ๊ฐ๋ฅํ๋ค.
๊ทธ๋ฌ๋ฏ๋ก ๋ถ๋ชจ์๊ฒ state
๋ฅผ ์ฃผ๊ณ ๊ทธ๊ฑธ ๋ฐ์์ค๋ฉด ๋๋ค.
์ด๋ ๋ถ๋ชจ์ state
๋ฅผ ๋ฐ๊พธ๊ณ ์ถ๋ค๋ฉด
1) setstate
๋ํ ๋ด๋ ค์ฃผ๊ฑฐ๋
2) ์์ ์์ฒด์์ ํจ์๋ฅผ ๋ง๋ค์ด์ ์ฌ์ฉํ ์ ์๋ค.
props๋ก count ๊ฐ๊ณผ onClickCountUpํจ์๋ฅผ ๋ชจ๋ ๊ฐ์ ธ์จ๋ค.
์ด๋ ๊ฒ state๋ฅผ ์๋ก ๋์ด์ฌ๋ฆฌ๋ ๋ฐฉ๋ฒ์ Lifting-state-up ์ด๋ผ๊ณ ํ๋ค.