26์ผ์ฐจ) [React/JS] Generic type / browserStorage

๊น€์žฌ๋ฒ”ยท2022๋…„ 8์›” 10์ผ
0

์ฝ”๋“œ์บ ํ”„

๋ชฉ๋ก ๋ณด๊ธฐ
33/46
post-thumbnail

โœํƒ€์ž…์Šคํฌ๋ฆฝํŠธ Generic

๐Ÿ“™ 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 ํƒ€์ž…์ด ๊ฐ์ฒด๋ผ๋Š” ์‚ฌ์‹ค์„ ๋ช…์‹œ)

โœLocal Storage(๋ธŒ๋ผ์šฐ์ € ์ €์žฅ์†Œ)

์ •๋ง ๊ฐ„๋‹จํ•œ ๊ฐœ๋…์€ ์•ž์„œ์„œ๋„ ๋‹ค๋ค˜์—ˆ๋‹ค. ๐Ÿ‘‡
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

๐Ÿ’ก ์–ธ์ œ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€?

๋น„ํšŒ์›์œผ๋กœ ๋‹ด๋Š” ์žฅ๋ฐ”๊ตฌ๋‹ˆ๋Š” ๋กœ๊ทธ์ธ๋œ ๊ณ„์ •์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ์ด ์•„๋‹Œ, ๋ธŒ๋ผ์šฐ์ €์˜ ์ €์žฅ์†Œ์— ์ž„์‹œ๋กœ ์ €์žฅํ•ด์„œ ์‚ฌ์šฉ

โœ์ฟ ํ‚ค

  1. ๋งŒ๋ฃŒ ์‹œ๊ฐ„ O
  2. ์ €์žฅ๋œ ์ฟ ํ‚ค๊ฐ€ Backend-API ์š”์ฒญ์‹œ์— ์ž๋™์œผ๋กœ ์ „์†ก
    (Backend์—์„œ๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฟ ํ‚ค์— ๋„ฃ์–ด์„œ Frontend ์ „๋‹ฌ ๊ฐ€๋Šฅ)
  3. httpOnly, secure๋“ฑ์˜ ์˜ต์…˜ ์„ค์ • ๊ฐ€๋Šฅ
    1) httpOnly : ๋ธŒ๋ผ์šฐ์ €์—์„œ Javascript๋ฅผ ์ด์šฉํ•ด ์ฟ ํ‚ค ์ ‘๊ทผ ๋ถˆ๊ฐ€(ํ†ต์‹ ๋งŒ ๊ฐ€๋Šฅ)
    2) secure : https ํ†ต์‹ ์‹œ์—๋งŒ ํ•ด๋‹น ์ฟ ํ‚ค๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ
  4. ๋ธŒ๋ผ์šฐ์ € ์ข…๋ฃŒํ•ด๋„ ๊ธฐ๋ก ์žˆ์Œ(= ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€)

โœ๋ธŒ๋ผ์šฐ์ € ์ €์žฅ์†Œ ์กฐํšŒ ๋ฐ ์‚ญ์ œ ๋ฐฉ๋ฒ•

๐Ÿ“Œ์ฟ ํ‚ค

// ์ฟ ํ‚ค ์ €์žฅ
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);
};
profile
์ง€์‹์„ ์Œ“๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€