React

[TIL/React] 2023/06/24

useRef ๐ŸŸข Reference ๐ŸŸก ์ปดํฌ๋„ŒํŠธ์˜ ์ตœ์ƒ๋‹จ์—์„œ useRef๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ref๋ฅผ ์„ ์–ธํ•œ๋‹ค. Usage ๐ŸŸก Referencing a value with a ref ๐ŸŸฃ ref๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค. ์œ„ ์ปดํฌ๋„ŒํŠธ๋Š” ๋ฒ„ํŠผ์ด ํด๋ฆญ๋œ ํšŸ์ˆ˜๋ฅผ

2023๋…„ 6์›” 24์ผ1min read

useRef ๐ŸŸข

useRef๋Š” ``rendering์— ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฐ’`์„ `์ฐธ์กฐ``ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” React Hook์ด๋‹ค.

React ๊ณต์‹๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด, useRef Hook์€ ํฌ๊ฒŒ ์„ธ ๊ฐ€์ง€ ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.

1. Referencing a value with a ref 2. Manipulating the DOM with a ref 3. Avoiding recreating the ref contents

๋งŽ์€ ๋‚ด์šฉ์ด ์žˆ๊ฒ ์ง€๋งŒ, ์˜ค๋Š˜์€ ๊ณต์‹๋ฌธ์„œ์— ์žˆ๋Š” Stopwatch ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด useRef๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  useState์™€ ๋น„๊ตํ•ด ๋ณด์•˜๋‹ค.

Stopwatch code ๐ŸŸก

code
import { useState, useRef } from "react";

export default function Stopwatch() {
  const [startTime, setStartTime] = useState(null);
  const [now, setNow] = useState(null);
  const intervalRef = useRef(null);
  console.log("๋‚˜ ์‹คํ–‰๋์–ด 1");
  // 2. handleStart ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋จ
  function handleStart() {
    // 3. startTime๋ผ๋Š” ์ƒํƒœ๋ฅผ ํ˜„์žฌ ์‹œ๊ฐ์œผ๋กœ ์—…๋ฐ์ดํŠธ
    setStartTime(Date.now());
    // 4. now๋ผ๋Š” ์ƒํƒœ๋ฅผ ํ˜„์žฌ ์‹œ๊ฐ์œผ๋กœ ์—…๋ฐ์ดํŠธ
    setNow(Date.now());
    // 5. cleaerInterval์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰๋˜๋Š” ์ธํ„ฐ๋ฒŒ์„ ์ค‘์ง€, ๋‹จ ์ดˆ๊ธฐ๊ฐ’์ด null์ด๊ธฐ์— ์ฒซ ํด๋ฆญ์—์„œ๋Š” ๋ฌด์‹œ๋จ
    clearInterval(intervalRef.current);
    // 6. 0.01์ดˆ๋งˆ๋‹ค now๋ฅผ ํ˜„์žฌ ์‹œ๊ฐ„์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋Š” ์ƒˆ๋กœ์šด ์ธํ„ฐ๋ฒŒ์„ ์„ค์ •ํ•จ
    intervalRef.current = setInterval(() => {
      setNow(Date.now());
    }, 10);
  }

  // 12. handleStop ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋จ
  function handleStop() {
    // 13. ์‹คํ–‰ ์ค‘์ธ ์ธํ„ฐ๋ฒŒ์„ clearInterval์„ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘์ง€ํ•จ
    clearInterval(intervalRef.current);
  }

  // 7. secondsPassed ๋ณ€์ˆ˜๋Š” ๊ฒฝ๊ณผํ•œ ์‹œ๊ฐ„์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ณ€์ˆ˜
  let secondsPassed = 0;
  console.log(secondsPassed);
  console.log("๋‚˜ ์‹คํ–‰๋์–ด 2");
  // 8. startTime๊ณผ now๊ฐ€ ์กด์žฌํ•  ๊ฒฝ์šฐ์—๋งŒ ๊ฐ’์„ ๊ณ„์‚ฐํ•จ
  if (startTime != null && now != null) {
    // 9. ๊ณ„์‚ฐ์€ '(now-startTIme)/1000'๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, ๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„์ธ ์‹œ๊ฐ„์„ ์ดˆ ๋‹จ์œ„๋กœ ๋ณ€ํ™˜ํ•จ
    secondsPassed = (now - startTime) / 1000;
  }
  console.log(secondsPassed);
  console.log("๋‚˜ ์‹คํ–‰๋์–ด 3");
  return (
    <>
      {/* 10. ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ์†Œ์ˆ˜์  ์„ธ ์ž๋ฆฌ๊นŒ์ง€ ๋ณด์—ฌ์คŒ */}
      <h1>Time passed: {secondsPassed.toFixed(3)}</h1>
      {/* 1.Start ๋ฒ„ํŠผ์„ ํด๋ฆญํ•จ */}
      <button onClick={handleStart}>Start</button>
      {/* 11. Stop ๋ฒ„ํŠผ์„ ํด๋ฆญํ•จ */}
      <button onClick={handleStop}>Stop</button>
    </>
  );
}

์ฝ”๋“œ๋งˆ๋‹ค ์ฃผ์„์œผ๋กœ ์„ค๋ช…์„ ์ฒจ๋ถ€ํ–ˆ์ง€๋งŒ, ํ•ต์‹ฌ์ ์ธ ๋‚ด์šฉ์€ useState๋Š” ``์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธ`ํ•˜๊ณ  ํ•ด๋‹น ์ƒํƒœ์— ๋Œ€ํ•œ `๋ Œ๋”๋ง`์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ˜๋ฉด, useRef๋Š” `๊ฐ’์„ ์œ ์ง€`ํ•˜๊ณ  ์ปดํฌ๋„ŒํŠธ์˜ `๋ Œ๋”๋ง๊ณผ ๊ด€๋ จ์ด ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ``ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค๋Š” ์ ์ด๋‹ค.

More to read

Amazon VPC

Amazon VPC Architecture ์ดํ•ดํ•˜๊ธฐ

์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋ฅผ ๊ธฐํšํ•˜๋ฉฐ, ๊ฐœ๋ฐœ์—์„œ ๋ฌด์—‡์„ ๊ฐ€์žฅ ๋จผ์ € ๊ณ ๋ฏผํ•ด์•ผ ํ•˜๋Š”์ง€ ๋‹ค์‹œ ๋Œ์•„๋ณด๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.ํ•œ๋•Œ๋Š” ํ”„๋ก ํŠธ์—”๋“œ๊ฐ€ ๋ชจ๋“  ์„ค๊ณ„์˜ ์ถœ๋ฐœ์ ์ด๋ผ๊ณ  ๋ฏฟ์—ˆ์Šต๋‹ˆ๋‹ค. ์œ ์ €๊ฐ€ ๋ฌด์—‡์„ ๋ณด๊ณ , ์–ด๋–ค ํ๋ฆ„์—์„œ ๋จธ๋ฌด๋ฅด๊ณ  ์ดํƒˆํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ดํ•ด ์—†์ด ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ ๋‹ค๋Š” ๊ฑด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๊ธฐ

'์›์‚ฌ์ดํŠธ'

ํ”„๋ก ํŠธ์—”๋“œ ๊ด€์ ์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ดํ•ดํ•˜๊ธฐ

์˜ค๋žœ๋งŒ์— ๋ฐฉ๋ฒ•๋ก ์— ๊ด€ํ•œ ๊ธ€์„ ์“ฐ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ ์ƒํ™ฉ์€ ์ด๋ ‡์Šต๋‹ˆ๋‹ค. SSAFY์—์„œ๋Š” ํ•˜๋ฃจ์— ์—„์ฒญ๋‚œ ์–‘์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋“ค์„ ๊ณผ์ œ๋กœ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ ๊ณผ์ •์—์„œ, '๊ตฌํ˜„๋ ฅ'์ด ๋งค์šฐ ๋–จ์–ด์ง„๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์™„์ „ํžˆ ์–ด๋ ค์šด ๋ฌธ์ œ๋ผ๋ฉด '์•„์‰ฌ์›€'์ด๋ผ๋Š” ๊ฐ์ •์กฐ์ฐจ ๋А๋ผ์ง€

Subnet

VPC ์„ค๊ณ„์˜ ์‹œ์ž‘: IP์™€ Subnet

๋ฐ˜๋ณต๋˜๋Š” ๋ฃจํ‹ด ์†์—์„œ ์–ป์€ ์•ˆ์ •๊ฐ์„ ๋ฐœํŒ ์‚ผ์•„, ์ด์ œ๋Š” ๊ธฐ์ˆ ์  ์ŠคํŽ™ํŠธ๋Ÿผ์„ ๋„“ํžˆ๊ธฐ ์œ„ํ•œ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ์— ์ฐฉ์ˆ˜ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์˜ ๋ชฉํ‘œ๋Š” ๋‹จ์ˆœํ•œ ํฌํŠธํด๋ฆฌ์˜ค ๊ตฌ์ถ•์„ ๋„˜์–ด, ์‹ค์ œ ์„œ๋น„์Šค ์ˆ˜์ค€์˜ ๋ธ”๋กœ๊ทธ ์‹œ์Šคํ…œ ๊ตฌํ˜„๊ณผ ๋‹ค๊ตญ์–ด ์ฒ˜๋ฆฌ ์ ์šฉ ๋“ฑ ์‹ค๋ฌด์— ๊ฐ€๊นŒ์šด ์—ญ๋Ÿ‰์„ ํ•œ ๋‹จ๊ณ„