[๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ปTA9 ์ธํ„ด 24์ผ์ฐจ] LocalStorage

Goofiยท2023๋…„ 8์›” 10์ผ
0

LocalStorage

์œ ์ €์˜ ๋ธŒ๋ผ์šฐ์ €์— ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์“ฐ๋Š” ๊ณต๊ฐ„์ด๋‹ค.

  • ์‚ฌ์ดํŠธ๋งˆ๋‹ค 5MB ์ •๋„์˜ ๋ฌธ์ž ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ๊ฐ€๋Šฅ
  • object ์ž๋ฃŒ๋ž‘ ๋น„์Šทํ•˜๊ฒŒ key/value ํ˜•ํƒœ๋กœ ์ €์žฅํ•œ๋‹ค.
  • ์œ ์ €๊ฐ€ ๋ธŒ๋ผ์šฐ์ € ์ฒญ์†Œ๋ฅผ ํ•˜์ง€ ์•Š๋Š” ์ด์ƒ ์˜๊ตฌ์ ์œผ๋กœ ๋‚จ์•„ ์žˆ๋‹ค.

๋ฌธ๋ฒ•

์ถ”๊ฐ€

localStorage.setItem('๋ฐ์ดํ„ฐ์ด๋ฆ„', '๋ฐ์ดํ„ฐ');

์ฝ๊ธฐ

localStorage.getItem('๋ฐ์ดํ„ฐ์ด๋ฆ„');

์‚ญ์ œ

localStorage.removeItem('๋ฐ์ดํ„ฐ์ด๋ฆ„');

array/object ์ž๋ฃŒ ์ €์žฅ ๋ฐ ์‚ฌ์šฉ

โ—๏ธ์ฃผ์˜
LocalStorage๋Š” ๋ฌธ์ž๋งŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์ด๋ผ array/object๋ฅผ ๋ฐ”๋กœ ์ €์žฅํ•  ์ˆ˜ ์—†๋‹ค.
๊ฐ•์ œ๋กœ ์ €์žฅํ•ด๋ณด๋ฉด ๋ฌธ์ž๋กœ ๋ฐ”๊ฟ”์„œ ์ €์žฅํ•ด์ฃผ๋Š”๋ฐ ๊ทธ๋Ÿผ array/object ์ž๋ฃŒ๊ฐ€ ๊นจ์ ธ์„œ ์ €์žฅ๋œ๋‹ค.

ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

array/object๋ฅผ JSON์œผ๋กœ ๋ณ€ํ™˜ํ•ด์„œ ์ €์žฅํ•˜๋ฉด ๋œ๋‹ค.

  • JSON.stringify()๋ฉ”์„œ๋“œ ์ด์šฉ
    JSON.stringify() ๋ฉ”์„œ๋“œ๋Š” JavaScript ๊ฐ’์ด๋‚˜ ๊ฐ์ฒด๋ฅผ JSON ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ•œํ•œ๋‹ค.
localStorage.setItem('obj', JSON.stringify({name : 'kim'}));
//"{"name":"kim"}" ์ €์žฅ๋œ๋‹ค.

์‚ฌ์šฉ

๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์‹œ ๊บผ๋‚ด๋ฉด JSON์ด ๋‚˜์˜ค๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€ํ™˜ํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

  • JSON.parse()๋ฉ”์„œ๋“œ ์ด์šฉ
    JSON.parse()๋ฉ”์„œ๋“œ๋Š” JSON ๋ฌธ์ž์—ด์˜ ๊ตฌ๋ฌธ์„ ๋ถ„์„ํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ์—์„œ JavaScript ๊ฐ’์ด๋‚˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ
let a = localStorage.getItem('obj');
let b = JSON.parse(a)

LocalStorage ์‘์šฉ

์‚ฌ์šฉ์ž๊ฐ€ ํ™ˆ ํŽ˜์ด์ง€์— ์žˆ๋˜ ์ƒํ’ˆ ๋ฆฌ์ŠคํŠธ์— ์ƒํ’ˆ์„ ํด๋ฆญํ•˜์—ฌ ์ƒ์„ธํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋ฉด ์ƒ์„ธํŽ˜์ด์ง€์— ์žˆ๋Š” ์ƒํ’ˆid๋ฅผ ๊ฐ€์ ธ์™€์„œ localStorage ํ•ญ๋ชฉ์— ์ถ”๊ฐ€
๋‹จ, ์ƒํ’ˆid๋Š” ์ค‘๋ณต ๋˜์ง€ ์•Š๋Š”๋‹ค.

์ƒํ’ˆid ์ค‘๋ณต์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด indexOf()๋ฉ”์„œ๋“œ์™€ Set()์ž๋ฃŒํ˜•์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

  1. indexOf() ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ
    indexOf() ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด์—์„œ ์ง€์ •๋œ ์š”์†Œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ์ฒซ ๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด -1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    indexOf() ์ฐธ๊ณ ์ž๋ฃŒ

'watched'๋ผ๋Š” localStorage๊ฐ€ ์กด์žฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •

let id = useParams(); //useParams๋Š” string ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

let resultSearch = props.shoes.find(x => x.id === Number(id));

let data = localStorage.getItem('watched');
data = JSON.parse(data);

if(data.indexOf(resultSearch.id) === -1){
	data.push(resultSearch.id)
  	localStorage.setItem('watched', JSON.stringify(data))
}
  1. Set() ์ž๋ฃŒํ˜• ์‚ฌ์šฉ
    set ๊ฐ์ฒด๋Š” ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ์œ ์ผํ•œ ๊ฐ’๋“ค์˜ ์ง‘ํ•ฉ์ด๋‹ค.
    Set() ์ฐธ๊ณ ์ž๋ฃŒ

'watched'๋ผ๋Š” localStorage๊ฐ€ ์กด์žฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •

let id = useParams(); //useParams๋Š” string ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

let resultSearch = props.shoes.find(x => x.id === Number(id));

let data = localStorage.getItem('watched');
data = JSON.parse(data);
data.push(resultSearch.id);
data = new Set(data);
data = Array.from(data);
localStorage.setItem('watched', JSON.stringify(data));

์ฐธ๊ณ 
Q) ๋ชจ๋“  state๋ฅผ localStorage์— ์ž๋™์ €์žฅ ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
์™ธ๋ถ€๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ํ•˜๋ฉด ์‰ฝ๊ฒŒ ๊ตฌํ˜„ ๊ฐ€๋Šฅ.

ex) Redux ์“ฐ๋Š” ์‚ฌ๋žŒ๋“ค์€ redux-persist ์„ค์น˜ํ•˜๋ฉด Redux store ์•ˆ์— ์žˆ๋˜ ๊ฑฐ์˜ ๋ชจ๋“  state๋“ค์„ localStorage์— ์ž๋™์ €์žฅ ๊ฐ€๋Šฅ

profile
์˜ค๋Š˜๋ณด๋‹จ ๋‚ด์ผ์ด ๊ฐ•ํ•œ ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค!!๐Ÿง‘๐Ÿปโ€๐Ÿ’ป

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

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด