jjanmo / scrolls

Let's make scrolls deep dive ๐Ÿฅณ

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Scrolls

๋‹ค์–‘ํ•œ ์Šคํฌ๋กค ๊ธฐ๋Šฅ์„ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•ด๋ณด์ž.

Install & Start

 yarn

install node_modules

yarn dev

execute app in local as dev mode

Structure

src
 โ”œโ”€โ”€ apis        # api layer
 โ”œโ”€โ”€ components  # each component of a page
 โ”œโ”€โ”€ hooks       # custom hooks collection
 โ”œโ”€โ”€ pages       # app pages
 โ”œโ”€โ”€ store       # client state collection
 โ””โ”€โ”€ styles      # style files

  • apis : axios, swr๋ฅผ ํ†ตํ•œ ์ธํ„ฐํŽ˜์ด์Šค ๋ฐ ํƒ€์ž… ๊ตฌํ˜„

  • store : redux๋ฅผ ํ†ตํ•œ ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ ๊ด€๋ฆฌ

Features

  • SWR(useSWRInfinite)์™€ Intersection Observer API๋ฅผ ์ด์šฉํ•œ ๋ฌดํ•œ์Šคํฌ๋กค

  • 4PAGE ๊นŒ์ง€๋งŒ ํ˜ธ์ถœ โ†’ ๊ทธ์™ธ ํ˜ธ์ถœ์‹œ ๋ฐฉ์–ด์ฝ”๋“œ ์ž‘์„ฑ

  • ๋ถˆ์™„์ „ํ•œ ๋ถ๋งˆํฌ ๊ธฐ๋Šฅ

  • ๋ถˆ์™„์ „ํ•œ ๋ถ๋งˆํฌ ํŽ˜์ด์ง€

    [์ฐธ๊ณ 1] ๋ถˆ์™„์ „ํ•œ ๋ถ๋งˆํฌ ํŽ˜์ด์ง€ (๊ฐœ์ธ์ ์œผ๋กœ ๋ถˆ์™„์ „ํ•˜์ง€๋งŒ ์žˆ์„๋ฒ•ํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์–ด์„œ ๊ตฌํ˜„ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๐Ÿ˜…)

    • ๋ถˆ์™„์ „ํ•œ ์ด์œ 

      ์œ ์ €๊ฐ€ ๋ถ๋งˆํฌ ํ–ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์„œ๋ฒ„์™€ ๋™๊ธฐํ™” ์‹œํ‚ค๊ณ  ์žˆ์ง€์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ฑ„์šฉ ๊ณต๊ณ  ํŽ˜์ด์ง€์— ๋ถ๋งˆํฌ ๋‚ด์šฉ์ด ๋ฐ˜์˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ํด๋ผ์ด์–ธํŠธ์—์„œ๋งŒ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

    • ๋ถ๋งˆํฌ ํŽ˜์ด์ง€์—์„œ unmount์‹œ ํด๋ผ์ด์–ธํŠธ์˜ ๋ถ๋งˆํฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฆฌ์…‹ํ•ฉ๋‹ˆ๋‹ค.

      ์ด ์—ญ์‹œ ์„œ๋ฒ„์™€์˜ ๋™๊ธฐํ™”์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”๋ฐ์š”. ์ฑ„์šฉ ํŽ˜์ด์ง€์—์„œ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ SWR์„ ํ†ตํ•ด์„œ ์„œ๋ฒ„ ์ƒํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์—๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ๊ฐ€ ๋ฐ˜์˜๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ™์€ ์ฑ„์šฉ ๊ณต๊ณ ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ถ๋งˆํฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์–ด ๋ถ๋งˆํฌ ํŽ˜์ด์ง€์—์„œ๋Š” ๊ฐ™์€ ๋ถ๋งˆํฌํ•œ ๊ณต๊ณ ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ถ”๊ฐ€๋กœ ์ฑ„์šฉ๊ณต๊ณ  id๊ฐ’์„ ํ‚ค๊ฐ’์œผ๋กœ ๋…ธ์ถœํ•ด์ฃผ๊ณ  ์žˆ๋Š”๋ฐ, ์ด ์—ญ์‹œ ๊ฐ™์€ ๊ณต๊ณ ๋ฅผ ๋ถ๋งˆํฌํ•˜๊ฒŒ๋˜์–ด ๊ฒฝ๊ณ ๊ฐ€ ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

    [์ฐธ๊ณ 2] next-redux-wrapper๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์—์„  ํด๋ผ์ด์–ธํŠธ ์ƒํƒœ๋งŒ์„ ๊ด€๋ฆฌํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— (Nextjs์—์„œ SSR๋“ฑ์—์œผ๋กœ ์ธํ•œ)์„œ๋ฒ„์˜ ์ƒํƒœ์™€ ํด๋ผ์ด์–ธํŠธ ์ƒํƒœ๋ฅผ ๋™๊ธฐํ™” ์‹œํ‚ค๋Š” ์ž‘์—…์„ ํ•  ํ•„์š”๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.( + ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์—์„œ ์„œ๋ฒ„ ์ƒํƒœ๋Š” SWR์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.)

More Features & More Learning

  • Pure ์Šคํฌ๋กค ์ด๋ฒคํŠธ๋ฅผ ์ด์šฉํ•œ ๋ฌดํ•œ ์Šคํฌ๋กค
  • React Query๋ฅผ ์‚ฌ์šฉํ•œ ๋ฌดํ•œ ์Šคํฌ๋กค
  • ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ด€๋ จ โ†’ react-virtualized/react-window

About

Let's make scrolls deep dive ๐Ÿฅณ


Languages

Language:TypeScript 97.9%Language:JavaScript 1.7%Language:CSS 0.3%