๐ generic์ ์ฌ์ฉํ๋ฉด, ์ธ์์ ๋ค์ด์ค๋ ํ์ ์ ๊ทธ๋๋ก ์ฌ์ฉํด์ผํ๋ค.
const result: [boolean, string, number]
arg๊ฐ booleanํ์
์ผ๋ก ๋ค์ด๊ฐ ๋ boolean.
arg๊ฐ string ํ์
์ผ๋ก ๋ค์ด๊ฐ ๋ string
arg๊ฐ number ํ์
์ผ๋ก ๋ค์ด๊ฐ ๋ number๋ก ๋์ค๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
Generic ์ค๋ฌด์ ๋ค์ด๋ฐ
Generic ํ์ ์ค๋ฌดํ์ฉ
useQuery, useMutation์ฒ๋ผ ๋ด๊ฐ ๋ง๋ ๊ธฐ๋ฅ์ ๋ค๋ฅธ ์ฌ๋์๊ฒ ์ ๊ณตํ๋ ๊ฒฝ์ฐ
ํด๋น ๊ธฐ๋ฅ์ ๋ค์ด์ค๋ ๊ฐ์ ํ์
์ ์์ํ ์ ์๊ธฐ ๋๋ฌธ์ Generic
์ ์ฌ์ฉ
ํ์ดํํจ์
hoc ์์ฉ(withAuth)
์ปดํฌ๋ํธ๋ ์ปดํฌ๋ํธ ํ์
์ด ๋ฐ๋ก ์์.
(props์ ๋ฐ๋์ ๊ฐ์ฒด๊ฐ ๋ค์ด๊ฐ์ผ ์คํ๋ ๋ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์, extends๋ฅผ ์ฌ์ฉํด์ P๋ผ๋ Generic ํ์
์ด ๊ฐ์ฒด๋ผ๋ ์ฌ์ค์ ๋ช
์)
์ ๋ง ๊ฐ๋จํ ๊ฐ๋ ์ ์์์๋ ๋ค๋ค์๋ค. ๐
https://velog.io/@nanyong0214/23%EC%9D%BC%EC%B0%A8-ReactJS-%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80-%EC%A0%80%EC%9E%A5%EC%86%8Ccookie-localStorage-sessionStorage
๐ก ์ธ์ ์ฌ์ฉํ๋๊ฐ?
๋นํ์์ผ๋ก ๋ด๋ ์ฅ๋ฐ๊ตฌ๋๋ ๋ก๊ทธ์ธ๋ ๊ณ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ์ด ์๋, ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ์์ ์์๋ก ์ ์ฅํด์ ์ฌ์ฉ
- ๋ง๋ฃ ์๊ฐ O
- ์ ์ฅ๋ ์ฟ ํค๊ฐ Backend-API ์์ฒญ์์ ์๋์ผ๋ก ์ ์ก
(Backend์์๋ ๋ฐ์ดํฐ๋ฅผ ์ฟ ํค์ ๋ฃ์ด์ Frontend ์ ๋ฌ ๊ฐ๋ฅ)- httpOnly, secure๋ฑ์ ์ต์ ์ค์ ๊ฐ๋ฅ
1)httpOnly
: ๋ธ๋ผ์ฐ์ ์์ Javascript๋ฅผ ์ด์ฉํด ์ฟ ํค ์ ๊ทผ ๋ถ๊ฐ(ํต์ ๋ง ๊ฐ๋ฅ)
2)secure
: https ํต์ ์์๋ง ํด๋น ์ฟ ํค๋ฅผ ๋ฐ์ ์ ์์- ๋ธ๋ผ์ฐ์ ์ข ๋ฃํด๋ ๊ธฐ๋ก ์์(= ๋ก์ปฌ์คํ ๋ฆฌ์ง)
๐์ฟ ํค
// ์ฟ ํค ์ ์ฅ const onClickSaveCookie = () => { document.cookie = "aaa=์ฒ ์" } // ์ฟ ํค ์กฐํ const onClickGetCookie = () => { const mycookie = document.cookie console.log(mycookie) }
๐๋ก์ปฌ์คํ ๋ฆฌ์ง
// ๋ก์ปฌ ์คํ ๋ฆฌ์ง ์ ์ฅ const onClickSaveLocal = () => { localStorage.setItem("bbb", "์ํฌ"); }; // ๋ก์ปฌ ์คํ ๋ฆฌ์ง ์กฐํ const onClickGetLocal = () => { const bbb = localStorage.getItem("bbb"); console.log(bbb); };
๐์ธ์ ์คํ ๋ฆฌ์ง
// ์ธ์ ์คํ ๋ฆฌ์ง ์ ์ฅ const onClickSaveSession = () => { sessionStorage.setItem("ccc", "ํ์ด"); }; // ์ธ์ ์คํ ๋ฆฌ์ง ์กฐํ const onClickGetSession = () => { const ccc = sessionStorage.getItem("ccc"); console.log(ccc); };