https://realtimesearch.netlify.app/
- ํ๋ก์ ํธ ๋ด๋ ค๋ฐ๊ธฐ:
git clone
https://github.com/Minsoek96/Real-time-search.git ./ - ํจํค์ง ์ค์น:
npm install
- ์ ํ๋ฆฌ์ผ์ด์
์คํ:
npm start
(๋ธ๋ผ์ฐ์ ๊ฐ ์๋์ผ๋ก ์คํ๋์ด ํํ์ด์ง๋ก ์ด๋)
- src/api: API ์์ฒญ ๊ด๋ จ ๊ด๋ฆฌ
- src/context: Context ๊ด๋ จ ๊ด๋ฆฌ
- src/hooks: ์ปค์คํ ํ ๊ด๋ฆฌ
- src/pages: ํ์ด์ง ๋ ๋๋ง ์ปดํฌ๋ํธ ๊ด๋ฆฌ
- src/reducer: ์ํ ๋ณํ ๊ด๋ฆฌ
- ์บ์ฑ์ AXIOS ์ธํฐ์ ํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํ ํ์ต๋๋ค.
- ์์ฒญ์ getCache Storage (key ) ๋ฐํ ๊ฐ์ด ์์ผ๋ฉด ์์ฒญ์ค์ง๋ฅผ ์ํด Error์ ์บ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํฉ๋๋ค.
- ์๋ต์ ์๋ต๊ฐ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๋ฉด setCacheStorage (key, data, etime) ์ ์ ์ฅํฉ๋๋ค.
- Error๋ฅผ ์๋ตํ ๊ฒฝ์ฐ์ ์บ์ฌ๋ฐ์ดํฐ๊ฐ ๋ด๊ฒจ์๋๊ฒฝ์ฐ ํด๋น ๋ฐ์ดํฐ๋ฅผ ์๋ต๊ฐ์ผ๋ก ๋ฐํํฉ๋๋ค.
- ๋๋ฐ์ด์ฑ ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ๊ตฌํ ํ์ต๋๋ค.
useDebounce
ํ ์ ์ฌ์ฉํ์ฌ ์ผ์ ์๊ฐ ๋์ ์ถ๊ฐ ์ ๋ ฅ์ด ์์ ๊ฒฝ์ฐ์๋ง API๋ฅผ ํธ์ถํ๋๋ก ํ์ต๋๋ค.- ์ฌ์ฉ์๊ฐ ํ์ดํํ๋ ๋์์๋ API ํธ์ถ์ด ๋ฐ์ํ์ง ์๊ณ , ํ์ดํ์ด ๋ฉ์ถ ํ ์ผ์ ์๊ฐ์ด ์ง๋ ํ์ API ํธ์ถ์ด ์ผ์ด๋๊ฒ ๋ฉ๋๋ค.
- **
useKeyNavigation
**๋ผ๋ ์ปค์คํ ํ ์ ์ฌ์ฉํ์ฌ "ArrowUp"๊ณผ "ArrowDown" ํค ์ ๋ ฅ์ ๊ฐ์งํ๊ณ , ํ์ฌ ์ ํ๋ ๊ฒ์์ด์ ์ธ๋ฑ์ค๋ฅผ ๋ณ๊ฒฝํ์ฌ ํค๋ณด๋๋ก ๊ฒ์์ด ๋ชฉ๋ก์ ํ์ํ ์ ์๋๋ก ํ์ต๋๋ค. - ์์ดํ ๋ฐ๋ฅ์ด ์๋๋ผ๋ฉด โArrowDownโ ์ธ๋ฐ์ค - 1
- ์์ดํ ์ด -1 ๋ณด๋ค ํฌ๋ฉด โArrowUpโ ์ธ๋ฑ์ค + 1
- Enter callback