์ ์ ์ ๋ธ๋ผ์ฐ์ ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ์ถ์ ๋ ์ฐ๋ ๊ณต๊ฐ์ด๋ค.
localStorage.setItem('๋ฐ์ดํฐ์ด๋ฆ', '๋ฐ์ดํฐ');
localStorage.getItem('๋ฐ์ดํฐ์ด๋ฆ');
localStorage.removeItem('๋ฐ์ดํฐ์ด๋ฆ');
โ๏ธ์ฃผ์
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)
์ฌ์ฉ์๊ฐ ํ ํ์ด์ง์ ์๋ ์ํ ๋ฆฌ์คํธ์ ์ํ์ ํด๋ฆญํ์ฌ ์์ธํ์ด์ง๋ก ์ด๋ํ๋ฉด ์์ธํ์ด์ง์ ์๋ ์ํid๋ฅผ ๊ฐ์ ธ์์
localStorage
ํญ๋ชฉ์ ์ถ๊ฐ
๋จ, ์ํid๋ ์ค๋ณต ๋์ง ์๋๋ค.
์ํid ์ค๋ณต์ ํผํ๊ธฐ ์ํด indexOf()
๋ฉ์๋์ Set()
์๋ฃํ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
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))
}
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์ ์๋์ ์ฅ ๊ฐ๋ฅ