๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

TIL

useRef ใƒป Cookie

 

 

๐Ÿ“Œ useRef

 

useRef๋ž€?

useRef๋Š” React์—์„œ ์‚ฌ์šฉ๋˜๋Š” Hook ์ค‘ ํ•˜๋‚˜๋กœ, ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ "์ฐธ์กฐ(reference)"๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.

useRef๋ฅผ ์ด์šฉํ•˜๋ฉด DOM ์š”์†Œ๋‚˜ ๋‹ค๋ฅธ React ์ปดํฌ๋„ŒํŠธ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฆฌ๋ Œ๋”๋ง๋  ๋•Œ์—๋„ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

 

 

 

useRef์˜ ์ฃผ์š” ์šฉ๋„

  • DOM ์š”์†Œ์— ์ ‘๊ทผ: useRef๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ref๋ฅผ ์ƒ์„ฑํ•˜๋ฉด, ํ•ด๋‹น ref๋ฅผ ํŠน์ • DOM ์š”์†Œ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ•„์š”์— ๋”ฐ๋ผ ํ•ด๋‹น DOM ์š”์†Œ์˜ ์†์„ฑ์ด๋‚˜ ๋ฉ”์„œ๋“œ์— ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ปดํฌ๋„ŒํŠธ ๋ณ€์ˆ˜ ์œ ์ง€: useRef๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด, ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฆฌ๋ Œ๋”๋ง๋˜์–ด๋„ ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ๊ฐ€ ์•„๋‹Œ ์ผ์‹œ์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋ชฉ์ ์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

useRef ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

import React, { useRef, useEffect } from 'react';

const MyComponent = () => {
  // DOM ์š”์†Œ์— ์ ‘๊ทผํ•˜๋Š” ์˜ˆ์ œ
  const myButtonRef = useRef(null);

  // ์ปดํฌ๋„ŒํŠธ ๋ณ€์ˆ˜ ์œ ์ง€ํ•˜๋Š” ์˜ˆ์ œ
  const counterRef = useRef(0);

  // useEffect๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง๋  ๋•Œ๋งˆ๋‹ค ์‹คํ–‰๋  ํšจ๊ณผ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  useEffect(() => {
    // DOM ์š”์†Œ์— ์ ‘๊ทผํ•˜์—ฌ ๋ฒ„ํŠผ์— ํฌ์ปค์Šค๋ฅผ ์ค๋‹ˆ๋‹ค.
    if (myButtonRef.current) {
      myButtonRef.current.focus();
    }

    // ์ปดํฌ๋„ŒํŠธ ๋ณ€์ˆ˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ฉด์„œ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    counterRef.current += 1;
    console.log('Counter:', counterRef.current);
  });

  return (
    <div>
      {/* ref๋ฅผ ๋ฒ„ํŠผ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. */}
      <button ref={myButtonRef}>Click Me</button>
      <p>Counter: {counterRef.current}</p>
    </div>
  );
};

export default MyComponent;

 

useRef๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฒ„ํŠผ์— ํฌ์ปค์Šค๋ฅผ ์ค„ ์ˆ˜ ์žˆ๊ณ , counterRef๋ฅผ ํ†ตํ•ด ์ปดํฌ๋„ŒํŠธ ๋ณ€์ˆ˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ฉด์„œ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋™์ž‘์€ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฆฌ๋ Œ๋”๋ง๋˜์–ด๋„ useRef๋ฅผ ํ†ตํ•ด ์œ ์ง€๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

 

 


 

 

 

๐Ÿ“Œ Cookie

 

  • Cookie์˜ MaxAge, Expires ์˜ต์…˜์ด ๋ฌด์—‡์ธ์ง€, ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

Cookie๋ž€?

์ฟ ํ‚ค(Cookie)๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €์— ์ €์žฅ๋˜๋Š” ์ž‘์€ ๋ฐ์ดํ„ฐ ์กฐ๊ฐ์œผ๋กœ, ์›น ์‚ฌ์ดํŠธ์™€ ์‚ฌ์šฉ์ž ๊ฐ„์˜ ์ƒํƒœ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์„ธ์…˜ ๊ด€๋ฆฌ, ์‚ฌ์šฉ์ž ์ถ”์  ๋“ฑ์˜ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ์ฟ ํ‚ค๋Š” ์„œ๋ฒ„๊ฐ€ ์‚ฌ์šฉ์ž์˜ ๋ธŒ๋ผ์šฐ์ €์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ , ํ•ด๋‹น ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ™์€ ์›น ์‚ฌ์ดํŠธ๋ฅผ ๋ฐฉ๋ฌธํ•  ๋•Œ๋งˆ๋‹ค ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ํ•จ๊ป˜ ๋ณด๋‚ด์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

 

์ฟ ํ‚ค๋Š” ์ด๋ฆ„, ๊ฐ’, ๋งŒ๋ฃŒ ๋‚ ์งœ, ๊ฒฝ๋กœ(path) ๋“ฑ์˜ ์†์„ฑ์„ ๊ฐ€์ง„๋‹ค. ๋˜ํ•œ, ์ฟ ํ‚ค๋Š” ์›น ์‚ฌ์ดํŠธ ๋„๋ฉ”์ธ ๋ ˆ๋ฒจ์—์„œ ์„ค์ •๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ•˜์œ„ ๋„๋ฉ”์ธ ๊ฐ„์— ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

MaxAge์™€ Expires ์˜ต์…˜

  • MaxAge: ์ฟ ํ‚ค์˜ ์œ ํšจ๊ธฐ๊ฐ„์„ ์ดˆ ๋‹จ์œ„๋กœ ์„ค์ •ํ•œ๋‹ค. MaxAge ์†์„ฑ์ด ์„ค์ •๋œ ์ฟ ํ‚ค๋Š” ๋ธŒ๋ผ์šฐ์ €์— ์˜ํ•ด ํ•ด๋‹น ๊ธฐ๊ฐ„๋งŒํผ ๋ณด๊ด€๋˜๋ฉฐ, ์œ ํšจ ๊ธฐ๊ฐ„์ด ์ง€๋‚œ ์ฟ ํ‚ค๋Š” ์ž๋™์œผ๋กœ ์‚ญ์ œ๋œ๋‹ค. MaxAge ์†์„ฑ์€ Expires๋ณด๋‹ค ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, MaxAge๊ฐ€ ์„ค์ •๋œ ๊ฒฝ์šฐ Expires๋Š” ๋ฌด์‹œ๋œ๋‹ค.
  • Expires: ์ฟ ํ‚ค์˜ ๋งŒ๋ฃŒ ๋‚ ์งœ๋ฅผ ์„ค์ •ํ•œ๋‹ค. ๋งŒ๋ฃŒ ๋‚ ์งœ๋ฅผ ์ง€๋‚˜๋ฉด ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ•ด๋‹น ์ฟ ํ‚ค๋ฅผ ์‚ญ์ œํ•œ๋‹ค. Expires๋Š” ๊ณผ๊ฑฐ ๋‚ ์งœ๋‚˜ ํ˜„์žฌ ๋‚ ์งœ๋ณด๋‹ค ์ด์ „ ๋‚ ์งœ๋กœ ์„ค์ •ํ•˜๋ฉด ์ฆ‰์‹œ ์‚ญ์ œ๋˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

 

 

์˜ต์…˜์„ ์„ค์ •ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ

  • ๋งŒ์•ฝ ์ฟ ํ‚ค์— MaxAge์™€ Expires ์˜ต์…˜์ด ๋ชจ๋‘ ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ํ•ด๋‹น ์ฟ ํ‚ค๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋™์•ˆ๋งŒ ์œ ์ง€๋˜๊ณ , ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ข…๋ฃŒํ•˜๋ฉด ์‚ญ์ œ๋œ๋‹ค. ์ด๋ฅผ "์„ธ์…˜ ์ฟ ํ‚ค(Session Cookie)"๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
  • ์„ธ์…˜ ์ฟ ํ‚ค๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €์˜ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณด์•ˆ์ ์ธ ์ธก๋ฉด์—์„œ ์ผ์‹œ์ ์ธ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ ์ ํ•ฉํ•˜๋‹ค. ํ•˜์ง€๋งŒ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ข…๋ฃŒํ•˜๋ฉด ์„ธ์…˜ ์ฟ ํ‚ค๋Š” ์‚ฌ๋ผ์ง€๋ฏ€๋กœ, ๋‹ค์‹œ ํ•ด๋‹น ์›น ์‚ฌ์ดํŠธ๋ฅผ ๋ฐฉ๋ฌธํ•  ๋•Œ ์ƒˆ๋กœ์šด ์„ธ์…˜ ์ฟ ํ‚ค๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

'TIL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์‹คํ–‰ ์ปจํ…์ŠคํŠธ  (1) 2023.10.11
JavaScript ๋Ÿฐํƒ€์ž„  (0) 2023.08.04
require์™€ import ใƒป const  (0) 2023.07.27
This ใƒป ๋ธŒ๋ผ์šฐ์ € ์ €์žฅ์†Œ  (0) 2023.07.26
HTTP ใƒป Position  (0) 2023.07.25