pnpm install
pnpm add sass --save-dev #scss ์ค์นํ๊ธฐ(์ค์น๋์ด ์์ง ์์ ๊ฒฝ์ฐ)
pnpm add react-intersection-observer #observer ์ค์นํ๊ธฐ(์ค์น๋์ด ์์ง ์์ ๊ฒฝ์ฐ)
q
)๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ, title
์ ๊ฒ์์ด๊ฐ ํฌํจ๋ ์ ํ๋ง ํํฐ๋งํ๋๋ก ๊ตฌํํ์ต๋๋ค.toLowerCase()
๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒ์์ด์ ์ ํ๋ช
์ ๋น๊ตํฉ๋๋ค.
[์์
๋ด์ฉ]
availabilityStatus
๊ฐ 'In Stock'์ผ๋ก
ํ์๋๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์์ต๋๋ค
useInfiniteQuery
ํ
์ ์ฌ์ฉํ์ฌ quotes ๋ฐ์ดํฐ๋ฅผ ๋น๋๊ธฐ๋ก ๊ฐ์ ธ์์ต๋๋ค.limit
๊ณผ skip
๊ฐ์ URL ํ๋ผ๋ฏธํฐ๋ก ์ ๋ฌํ์ฌ ํ์ํ ํ์ด์ง์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํฉ๋๋ค.ref
์์ฑ์ ๋ถ์ฌํ div
์์๊ฐ ๋ฐฐ์น๋์ด ์์ผ๋ฉฐ, useInView
ํ
์ผ๋ก Intersection Observer๊ฐ ์ด ์์๋ฅผ ๊ฐ์งํ ๋๋ง๋ค getNextPageParam
์์ ๋ง์ง๋ง ํ์ด์ง์ธ ๊ฒฝ์ฐ undefined
๋ฅผ ๋ฐํํ์ฌ ์ถ๊ฐ ๋ฐ์ดํฐ ์์ฒญ์ ๋ง๊ณ ,fetchNextPage
ํจ์๋ฅผ ํธ์ถํ์ฌ ์ถ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ต๋๋ค.Quotes
๊ฐ์ฒด๋ฅผ ๋ฐํํ๋๋ก ์์ฑํ์์ต๋๋ค.localStorage
์ ํด๋ฆญํ ๋ฐ์ดํฐ๊ฐ ์ด๋ฏธ ์กด์ฌํ๋ฉด ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๊ณ , ์กด์ฌํ์ง ์์ผ๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ์์ต๋๋ค.some
๋ฉ์๋๋ฅผ ํ์ฉํ์ฌ ํด๋ฆญํ ๋ฐ์ดํฐ๊ฐ localStorage
์ boolean
๊ฐ์ props๋ก ์ ๋ฌํ์์ต๋๋ค.[์ฐธ๊ณ ํ ์ฌ์ดํธ]
https://blog.banksalad.com/tech/typescript-local-storage/
๋ฌดํ์คํฌ๋กค ์ด์คํธ์ถ ์ค๋ฅ ๋ฐ์
react-intersection-observer ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ useInView ํ
์ ์ฌ์ฉํด ๋ฌดํ ์คํฌ๋กค์ ๊ตฌํํ๋ ์ค,
useInView๊ฐ ์๋ฏผํ๊ฒ ๋ฐ์ํ์ฌ API ํธ์ถ์ด ์ด์ค์ผ๋ก ๋ฐ์ํ๋ ๋ฌธ์ ๊ฐ ๋ฐ๊ฒฌ๋์์ต๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ โ useThrottle ์ปค์คํ
ํ
์ ์ฌ์ฉํด ๋ฌดํ ์คํฌ๋กค์์ ๋ค์ ํ์ด์ง ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๋ ํจ์๋ฅผ useThrottle๋ก ๊ฐ์ธ ํธ์ถ ๊ฐ๊ฒฉ์ ์ ํํ์ต๋๋ค.
useThrottle ์ปค์คํ
ํ
์ useRef์ setTimeout์ ํ์ฉํ์ฌ, ํน์ ์๊ฐ ๋ด์ ํ ๋ฒ๋ง ์คํ๋๋๋ก ํจ์ ํธ์ถ์ ์ ์ดํ์ต๋๋ค.
localstorage is not defined ์ค๋ฅ ๋ฐ์
localStorage๋ฅผ ํ์ฉํ์ฌ ์ฆ๊ฒจ์ฐพ๊ธฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ์ค,
localStorage is not defined
๋ผ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ โ if (typeof window !== 'undefined')
์กฐ๊ฑด๋ฌธ์ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ ํ๊ฒฝ์์๋ง localStorage
๋ฅผ ์คํํ๋๋ก ์์ ํ์ต๋๋ค.
์ด๋ฅผ ํตํด ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์์๋ง localStorage
๋ฅผ ์ ๊ทผํ ์ ์๋๋ก ์์ ํ๊ฒ ์ฒ๋ฆฌํ์ต๋๋ค.
[์ฐธ๊ณ ํ ์ฌ์ดํธ]
https://velog.io/@hyo123/Next.js-localStorage-์๋ฌํธ๋ค๋ง
์๋ ํ์ธ์! ์ฌ๋ฌ๋ถ์ ๊ด์ฌ๊ณผ ์ง์์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๋ณธ ๋ฌธ์์์๋ ๊ณผ์ ์ ํ์ ์์ํ๊ธฐ ์ํ ์ค์ ๋ฐฉ๋ฒ์ ์ค๋ช ํด๋๋ฆฌ๊ฒ ์ต๋๋ค.
npm install -g pnpm # pnpm ์ค์น (์ค์น๋์ด ์์ง ์์ ๊ฒฝ์ฐ)
npm install -g nvm # nvm ์ค์น (์ค์น๋์ด ์์ง ์์ ๊ฒฝ์ฐ)
nvm install # nvmrc์ ์ค์ ๋ Node.js ๋ฒ์ ์ค์น ๋ฐ ์ฌ์ฉ
pnpm install # ์์กด์ฑ ์ค์น
pnpm run dev # ๊ฐ๋ฐ ์๋ฒ ์คํ
๊ฐ๋ฐ ์๋ฒ ์คํํ http://localhost:3000๋ก ์ด๋ํ์ฌ ๊ณผ์ ๋ฅผ ํ์ธํด์ฃผ์ธ์.
sangmin4208
๊ณ์ ์ ํ๊ทธํด์ฃผ์ธ์. ํ์ธ ํ ๋ต๋ณ๋๋ฆฌ๊ฒ ์ต๋๋ค.This project uses DummyJSON API to provide mock data.
DummyJSON is licensed under the MIT License. See the MIT License for more details.
โ
db41a50 Merge pull request #17 from yaejin12/feature/wisdom e2e867a Merge pull request #16 from yaejin12/feature/market