2021. 8. 15. 22:43ใ๐ TIL
๐ฟ ์ฌ๋ฌ ๊ฐ์ Query String Parameter ๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ
์๋ ์ฒ๋ผ query string parameter ๋ฅผ ์ด์ฉํ์ฌ api ์์ฒญ์ ํ๊ณ ์์๋ค.
const response = await fetch(`/v1/search/book?query=${query}`)
์ฒ์์ {query} ํ๋ผ๋ฏธํฐ ๋ง ํ์ํ์ผ๋, ์ถ๊ฐ์ ์ผ๋ก {display} ํ๋ผ๋ฏธํฐ ๋ ํ์ํ๋ค.
๋ฏธ์ธ๋จผ์ง ๊ฐ์ ์ํ์ฐฉ์ค๊ฐ ์์๋๋ฐ, ์ฒซ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ๋ฅผ ์ฌ์ฉํ ๋ ๋ฌผ์ํ(?) ๊ฐ ์ฝ์ ๋๊ธฐ์, ๋ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ ์๋ ๋ฌผ์ํ๊ฐ ํ์ํ๋ค๊ณ ์๊ฐํ๋ค (์ค๋ต).
// Bad request
const response = await fetch(`/v1/search/book?query=${query}?display={display}`)
// Good request
const response = await fetch(`/v1/search/book?query=${query}&display={display}`)
์ ๋๋ก api ํธ์ถ์ด ๋์ง ์์ ๋ญ๊ฐ ๋ฌธ์ ์ธ์ง ๋ชฐ๋๋๋ฐ, ๋ฌผ์ํ๊ฐ ์๋๋ผ `&` ์๋ค. ๋ง์ฝ ์ธ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ๋ ํ์ํ๋ค๋ฉด, {display} ๋ค์ & ๋ฅผ ์ฝ์ ํ๋ฉด ๋๋ค. ๋๋ฌด ์ด์ด์๋ ์ค์๋ผ ๋ค์๋ ์๊น๋จน๊ณ ์ ๊ธฐ๋กํ๋ค ^__.__^;
๐ React ํ๋ก์ ํธ ์งํํ๋ฉด์ ๊ฒช์ ์ค์
1. Recoil์ selector ์๋ ํ์ง ์์๋ค. atom ์ผ๋ก ๊ฑธ์ด๋ state ๊ฐ ๋ณ๊ฒฝ ๋์ผ๋ ๋น์ฐํ selector ํจ์๊ฐ ์์๋ ๊ฑฐ๋ผ ์๊ฐํ ๊ฒ์ด ๋ฌธ์ ์๋ค. ์๋ฌด๋ฆฌ selector ๊ฐ get ํจ์๋ก ํด๋น ์ํฐ์ ์ธ์๋ก ๋ฐ์ ์ง๋ผ๋, ์ปดํฌ๋ํธ ๋ด๋ถ์์ ํด๋น selector ๋ฅผ useRecoilValue() ๋ก ์ ์ธํ์ง ์์ผ๋ฉด ๋์ํ์ง ์๋๋ค.
2. ํจ์ ์ปดํฌ๋ํธ๋ฅผ ์ ์ธํ๋ฉด์ ๋ฐ๋ก async ๋ฅผ ๊ฑธ์๋ค (์ฃฝ๋๋ค) . ๋ฌผ๋ก ๋ฐ๋ก ์๋ฌ๊ฐ ๋์ ์์ ํ๊ณ , ์๋ชป๋ ์ฌ์ฉ์ด๋ผ๋ ๊ฒ๋ ์๊ฒ ์ผ๋, ์ ํํ "์, ๋ฌด์์ด " ์๋ชป ๋๋์ง ์์ง ์ดํดํ์ง ๋ชปํ๋ค. ์ด ๋ถ๋ถ์ ๊ณต๋ถํด๋ณด์.
3. state ๋ฅผ DOM ์ ๋ฐ์ธ๋ฉํ์ง ์๊ณ , ์ผ๋ฐ ๋ณ์๋ฅผ ๋ฐ์ธ๋ฉํ๋ค. (์ฃฝ๋๋ค ์ง์ง)
์ค๋์ ๊ด๋ณต์ ,
๋ํ๋ ๋ฆฝ๋ง์ธ