LocalStorage๋ ์น ๋ธ๋ผ์ฐ์ ์์ ์ ๊ณตํ๋ ์น ์คํ ๋ฆฌ์ง(Web Storage) API์ ํ ์ข ๋ฅ๋ก,
ํด๋ผ์ด์ธํธ(์ฌ์ฉ์ ๋ธ๋ผ์ฐ์ )์ ๋ฐ์ดํฐ๋ฅผ ์๊ตฌ์ ์ผ๋ก ์ ์ฅํ ์ ์๋ ๋ฐฉ๋ฒ ์ค ํ๋์ด๋ค.
๐ "ํด๋ผ์ด์ธํธ(์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ )์ ์ ์ฅํ๋ค"๋ ์๋ฏธ๋ ์ฆ, ์ ์ฅ๋ ๋ฐ์ดํฐ๋ ์ค์ง ์ฌ์ฉ์์
์น ๋ธ๋ผ์ฐ์ ์์๋ง ์กด์ฌํ๋ฉฐ, ์๋ฒ์๋ ์๋ฌด ๊ด๋ จ์ด ์๋ค.
์ ์ฅ ์์น | ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ ) |
๋ฐ์ดํฐ ์๋ช | ๋ธ๋ผ์ฐ์ ๋ ํญ์ ๋ซ์๋ ์ญ์ ๋์ง ์์ (๋ช ์์ ์ผ๋ก ์ ๊ฑฐํด์ผ ํจ) |
์ ์ฅ ์ฉ๋ | ๋ณดํต ์ฝ 5MB (๋ธ๋ผ์ฐ์ ๋ง๋ค ๋ค๋ฆ) |
์ ๊ทผ ๋ฐฉ์ | ํค-๊ฐ(Key-Value) ์ |
์ง์ ํ์ | ๋ฌธ์์ด(string)๋ง ์ ์ฅ ๊ฐ๋ฅ (JSON.stringify ํ์) |
๋๊ธฐ์ | ๋ฐ์ดํฐ๋ ๋๊ธฐ์ ์ผ๋ก ์ ์ฅ๋๊ณ ์ฝํ |
๐ ์ฃผ์ ๋ฉ์๋
// ์ ์ฅ
localStorage.setItem('key', 'value');
// ๋ถ๋ฌ์ค๊ธฐ
const value = localStorage.getItem('key');
// ์ญ์
localStorage.removeItem('key');
// ์ ์ฒด ์ญ์
localStorage.clear();
๐ ์ฌ์ฉ ์์
// ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๊ณ ์ถ์ ๊ฒฝ์ฐ
const user = { name: 'Alice', age: 30 };
localStorage.setItem('user', JSON.stringify(user));
// ๋ถ๋ฌ์ฌ ๋๋ ๋ค์ ๊ฐ์ฒด๋ก ํ์ฑ
const savedUser = JSON.parse(localStorage.getItem('user'));
console.log(savedUser.name); // 'Alice'
- ์ฌ์ฉ์ ์ค์ ์ ์ฅ์ด ํ์ํ ๊ฒฝ์ฐ
ex. ๋คํฌ๋ชจ๋ ์ฌ๋ถ, ์ธ์ด์ค์ , ๊ธ๊ผด ํฌ๊ธฐ ๋ฑ์ ์ฌ์ฉ์ ์ ํธ ์ค์
- ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด์ผํ ๋
ex. ๊ฐ๋จํ ์ฌ์ฉ์ ์ ๋ณด (์ด๋ฆ, ์ด๋ฉ์ผ)๋ฑ์ ์ ์ฅํด ํ์ด์ง ์ด๋ ์์๋ ์ํ๋ฅผ ์ ์ง
- ์ดํ๋ฆฌ์ผ์ด์ ์ํ ์ ์ฅํ ๋
ex. ์ฅ๋ฐ๊ตฌ๋ ์ ๋ณด, ๊ฒ์ ์งํ ์ํ ๋ฑ ํด๋ผ์ด์ธํธ ์ธก ์ดํ๋ฆฌ์ผ์ด์ ์ํ ์ ์ฅ
- ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋
ex. ์๋ฒ์์ ํต์ ์์ด ๊ฐ๋จํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๋ณต๊ตฌํ ๋ ์ฌ์ฉํ ์ ์๋ค.
์ฆ:
์์:
์ด์ฒ๋ผ ๋ธ๋ผ์ฐ์ ์ ๋ชจ๋ ํญ/์ฐฝ์์ ๊ณต์ ๋๊ธฐ ๋๋ฌธ์ "์ธ์ ๊ฐ ๊ณต์ ๋๋ค"๊ณ ํํํ๋ค.
response๋ฅผ ํตํด์ { token : '1234555' } ์ด๋ฐ ํ์์ผ๋ก ๋ฐ์ดํฐ๊ฐ ๋์ด์์ ๋
localStorage.setItem('token', response.token); ์ผ๋ก ๋ฐ์ผ๋ฉด, token๊ฐ์ด stringํํ๋ก ๋ณํ์ด ๋ ๊น?
์ ํํ, ๋งํ๋ฉด ์ด ์ฝ๋๋ฅผ ์คํํ๋ฉด response.token์ ๊ฐ(์: '1234555')์ ์๋์ผ๋ก ๋ฌธ์์ด(string) ํํ๋ก ์ ์ฅ์ด ๋๋ค.
localStorage.setItem('token', response.token);
localStorage๋ ๋ชจ๋ ๊ฐ์ ๋ฌธ์์ด(string)๋ก ์ ์ฅํ๊ธฐ ๋๋ฌธ์ด๋ค,
์ฆ, ์ด๋ค ํ์
์ ๊ฐ์ ์ ์ฅํ๋ ค๊ณ ํด๋ ๋ด๋ถ์ ์ผ๋ก ๋ฌธ์์ด๋ก ๋ณํํด์ ์ ์ฅ๋๋ค.
localStorage.setItem('number', 12345);
localStorage.getItem('number'); // "12345" ← ๋ฌธ์์ด๋ก ๋ฐํ๋จ
์ฌ์ง์ด true, false, null, undefined, ์ซ์ ๋ฑ๋ ๋ค ๋ฌธ์์ด๋ก ๋ณํ๋๋ค.
๊ฐ์ฒด๋ ๋ฐ๋ก ์ ์ฅํ๋ฉด **"[object Object]"**๋ก ๋ณํ๋๋ฏ๋ก ๋ฐ๋์ JSON.stringify()๊ฐ ํ์ํ๋ค.
// ์ ์ฅ
const user = { name: 'Alice', age: 30 };
localStorage.setItem('user', JSON.stringify(user));
// ๋ถ๋ฌ์ฌ ๋
const savedUser = JSON.parse(localStorage.getItem('user'));
console.log(savedUser.name); // "Alice"
const user = { name: 'Alice', age: 30 };
const jsonString = JSON.stringify(user);
console.log(jsonString); // '{"name":"Alice","age":30}'
์ด๋ ๊ฒ ํ๋ฉด JavaScript ๊ฐ์ฒด๊ฐ "{"name":"Alice","age":30}"๋ผ๋ ๋ฌธ์์ด์ด ๋๋ค.
// ์ ์ฅ
localStorage.setItem('user', JSON.stringify(user));
// ๋ถ๋ฌ์ค๊ธฐ
const savedUser = JSON.parse(localStorage.getItem('user'));
console.log(savedUser.name); // "Alice"
const jsonString = '{"name":"Alice","age":30}';
const user = JSON.parse(jsonString);
console.log(user.name); // "Alice"
console.log(typeof user); // "object"
โ ์ธ์ ์ฌ์ฉํ๋์?
// ์ ์ฅํ ๋
const user = { name: 'Alice', age: 30 };
localStorage.setItem('user', JSON.stringify(user));
// ๊บผ๋ผ ๋
const savedUser = JSON.parse(localStorage.getItem('user'));
console.log(savedUser.name); // "Alice"
JSON.parse("hello");
// โ SyntaxError: Unexpected token h in JSON at position 0
JSON.parse("{name: 'Alice'}");
// โ SyntaxError: name must be double-quoted
โ๏ธ ํญ์ " ํฐ๋ฐ์ดํ๋ฅผ ์จ์ผ JSON์ผ๋ก ์ธ์๋ฉ๋๋ค.
JSON.stringify() | ๊ฐ์ฒด → ๋ฌธ์์ด |
JSON.parse() | ๋ฌธ์์ด → ๊ฐ์ฒด |
์๋ฒ์ ๊ฐ์ฒด ์ ์ก | JSON.stringify()๋ก ๋ฌธ์์ด๋ก ๋ณํํด์ ์ ์ก |
์๋ฒ์์ ์๋ต ์์ | JSON.parse()๋ก ๋ฌธ์์ด์ ๊ฐ์ฒด๋ก ๋ณํํด์ ์ฌ์ฉ |
[React] ์๋ฒ์์ ๋ฐ์ดํฐ ์ ์ก (0) | 2025.02.25 |
---|---|
[Mysql] Sql ๋ฌธ๋ฒ์ตํ๊ธฐ (DDL, DML, DCL) (1) | 2024.04.14 |
[Mysql] Mysql ์์ํ๊ธฐ (0) | 2024.04.09 |