TIL - 1

UihyunLeeยท2022๋…„ 5์›” 27์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
2/3

๐Ÿš€ TIL

localStorage

localStorage๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ˜„์žฌ ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ๋งˆ์น˜ localStorage๋ฅผ ์„œ๋ฒ„์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ฐ”๊ฟ”๋ณผ ์ƒ๊ฐ์ด๋‹ค. localStorage๋ฅผ ์‚ฌ์šฉํ•œ์ง€ ์‹œ๊ฐ„์ด ์กฐ๊ธˆ ์ง€๋‚œ ๊ฒƒ ๊ฐ™์•„์„œ ๊ทธ์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌ๋„ ํ•˜๊ณ  ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ชฉ์ ์œผ๋กœ ๋‘๊ณ  ๊ณต๋ถ€ํ–ˆ๋‹ค(ํ•˜๊ณ  ์žˆ๋Š” ํ”Œ์ ์— ๋„ฃ๋Š” ๊ฒƒ์€ ๋ค!)

์Šคํ† ๋ฆฌ์ง€์—๋Š” ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์™€ ์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€๊ฐ€ ์žˆ๋‹ค.
๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์šฐ์ง€ ์•Š๋Š”ํ•œ ์˜๊ตฌ์ ์œผ๋กœ ์œ ์ง€๋˜์ง€๋งŒ, ์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€๋Š” ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ซ์„ ๊ฒฝ์šฐ ์ œ๊ฑฐ๊ฐ€ ๋œ๋‹ค.

๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์˜ ์‚ฌ์šฉ๋ฒ•์€ ์ •๋ง ๊ฐ„๋‹จํ•˜๋‹ค.

[์ €์žฅ]

localStorage.setItem(ํ‚ค,๊ฐ’);

[์กฐํšŒ]

localStorage.getItem(ํ‚ค,๊ฐ’);

[์‚ญ์ œ]

localStorage.removeItem(ํ‚ค,๊ฐ’);

[์ €์žฅ์†Œ ์ „์ฒด ์‚ญ์ œ]

localStorage.clear();

์‚ฌ์šฉ๋ฒ•์€ ์œ„์™€ ๊ฐ™๋‹ค.

์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์— ์ ‘๋ชฉ์‹œ์ผœ ๋ณด๊ฒ ๋‹ค. ์‚ฌ์‹ค ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์ „์— ์‚ฌ์šฉํ–ˆ์„ ๋•Œ๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ํ† ํฐ์„ ๋ฐ›๊ณ  ๊ทธ ํ† ํฐ์„ ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅํ•˜๊ณ  ๋กœ๊ทธ์ธ ์œ ์ง€๊ฐ€ ๋  ๋•Œ ์‚ฌ์šฉํ–ˆ์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ง€๊ธˆ์€ ๋ฐฑ์—”๋“œ๊ฐ€ ์—†๋Š” ์ƒํƒœ์—์„œ ํ”„๋ก ํŠธ์—”๋“œ๋กœ๋งŒ ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ๋Š”๋ฐ, redux์—์„œ๋งŒ ๋ชจ๋“  ๊ฒƒ์„ ๊ด€๋ฆฌํ•˜๋ ค๋‹ค ๋ณด๋‹ˆ ์ฝ”๋“œ๊ฐ€ ์˜๋ฏธ์—†์ด ๊ธธ์–ด์ง€๋Š” ๊ฒƒ ๊ฐ™๊ณ  ์ œ๋Œ€๋กœ ๋œ ์„œ๋ฒ„์—ญํ• ์„ ํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ ๊ฐ™์•„์„œ, ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋ ค ํ•œ๋‹ค.

์›๋ž˜์˜ ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€๋Š” ์ฃผ๋กœ ํ‚ค ๊ฐ’์„ ์œ„์ฒ˜๋Ÿผ ์ด์šฉํ•˜์—ฌ ๋‹จ์ผ์ ์œผ๋กœ ํ•„์š”ํ•œ ๊ฐ’์„ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์•Œ๊ณ  ์žˆ๋Š”๋ฐ ๊ทธ๋ ‡๋‹ค๋ฉด ๋ฐฐ์—ด์ฒ˜๋Ÿผ ์‚ฌ์šฉ์„ ํ•˜๊ณ  ์ถ”๊ฐ€ ์‚ญ์ œ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ์ง€๋ฅผ ๊ณ ๋ฏผ ํ•ด๋ดค๋‹ค.


const onSubmitForm = useCallback(
        (e) => {
            e.preventDefault();            
            if (localStorage.data === undefined) {
                localStorage.setItem("data", JSON.stringify([]));
            }
            let dataFile = JSON.parse(localStorage.getItem("data"));
            dataFile.unshift({
                User: {
                    id: userId,
                },
                Data: {
                    id: uuidv4(),
                    name: name,
                    tag: tag,
                    author: author,
                    explanation: explanation,
                    file: file,
                },
            });
            localStorage.setItem("data", JSON.stringify(dataFile));
        },
        [name, author, explanation, tag, file]
    );

์œ„์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ํ•˜๋ฉด๋œ๋‹ค. useState๋ฅผ ์จ์„œ๋„ ํ•  ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ ๊ตณ์ด ๊ทธ๋Ÿด ํ•„์š”๊นŒ์ง€๋Š” ์—†์„ ๊ฒƒ ๊ฐ™์•„์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ณ€์ˆ˜ ํ•˜๋‚˜๋ฅผ ์ด์šฉํ•ด์„œ ๋งŒ๋“ค์—ˆ๋‹ค.
file์—๋Š” ์ด๋ฏธ์ง€ ํŒŒ์ผ์˜ preview ๊ฒฝ๋กœ๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ์–ด์„œ localStorage.getItem์„ ์ถ”ํ›„์— ์‚ฌ์šฉํ•ด์„œ ์ €์ด๋ฏธ์ง€๊ฐ’์„ ๋ฆฌ๋•์Šค๋กœ ๊ฐ€์ ธ์™€ ์ €์žฅํ•˜๊ณ  ์ „์ฒด ์ €์žฅ์†Œ ๊ฐ’์„ ์ด์šฉํ•ด (์‹ค์ œ ๋ฐฑ๊ณผ ํ”„๋ก ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ) ํ™”๋ฉด์—์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ฃผ๋ ค ํ•œ๋‹ค.

์œ„์— ๋ณด๋ฉด stringify๊ฐ€ ์žˆ๋Š”๋ฐ ์ด๊ฒƒ์€ localStorage๋Š” string ํ˜•์‹๋งŒ ๋“ค์–ด๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด, ๋ฐฐ์—ดํ˜•์‹์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์—†์ง€๋งŒ JSON.stringify๋ฅผ ์ด์šฉํ•ด์„œ ๋„ฃ์œผ๋ฉด ๋ฐฐ์—ด,๊ฐ์ฒด ๊ฐ’์„ stringํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•ด์„œ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค. ๊ฐ€์ ธ์˜ฌ๋•Œ๋Š” JSON.parse๋ฅผ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค !

profile
๊ณต๋ถ€ ๊ธฐ๋ก

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