์ œ์–ด ์ปดํฌ๋„ŒํŠธ์™€ ๋น„์ œ์–ด ์ปดํฌ๋„ŒํŠธ

์˜ค๋Š˜์€ ์ œ์–ด ์ปดํฌ๋„ŒํŠธ์™€ ๋น„์ œ์–ด ์ปดํฌ๋„ŒํŠธ์— ๋Œ€ํ•ด ์ •๋ฆฌํ–ˆ๋‹ค.


 

 

์ œ์–ด ์ปดํฌ๋„ŒํŠธ

  • React์—์„œ ์ปดํฌ๋„ŒํŠธ ์ƒํƒœ๊ฐ€ ์ž…๋ ฅ ํ•„๋“œ ๊ฐ’์„ ์ œ์–ดํ•œ๋‹ค.
  • ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์— ๋”ฐ๋ผ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ๋กœ ์—…๋ฐ์ดํŠธ๋œ๋‹ค.
  • ์ƒํƒœ(state)์™€ onChange ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ํ†ตํ•ด ๊ฐ’์ด ๊ด€๋ฆฌ๋œ๋‹ค.
  • ๊ฐ’์ด ์ฆ‰๊ฐ์ ์œผ๋กœ ๋ Œ๋”๋ง์— ๋ฐ˜์˜๋œ๋‹ค.
import { useState } from 'react';

function ControlledComponent() {
  const [inputValue, setInputValue] = useState("");

  const handleChange = (event) => {
    setInputValue(event.target.value);
  };

  return (
    <div>
      <h2>์ œ์–ด ์ปดํฌ๋„ŒํŠธ</h2>
      <input type="text" value={inputValue} onChange={handleChange} />
      <p>์ž…๋ ฅ๋œ ๊ฐ’: {inputValue}</p>
    </div>
  );
}

export default ControlledComponent;

 

๋น„์ œ์–ด ์ปดํฌ๋„ŒํŠธ

  • DOM ์š”์†Œ ์ž์ฒด๊ฐ€ ๊ฐ’์„ ์ œ์–ดํ•œ๋‹ค. ์ž…๋ ฅ๊ฐ’์„ React๊ฐ€ ์ง์ ‘ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๊ฐ’์— ์ง์ ‘ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ref๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
import { useRef } from 'react';

function UncontrolledComponent() {
  const inputRef = useRef();

  const handleSubmit = (event) => {
    event.preventDefault();
    alert(`์ž…๋ ฅ๋œ ๊ฐ’: ${inputRef.current.value}`);
  };

  return (
    <div>
      <h2>๋น„์ œ์–ด ์ปดํฌ๋„ŒํŠธ</h2>
      <form onSubmit={handleSubmit}>
        <input type="text" ref={inputRef} />
        <button type="submit">์ œ์ถœ</button>
      </form>
    </div>
  );
}

export default UncontrolledComponent;

 

์ฐจ์ด์  ์š”์•ฝ

ํŠน์ง• ์ œ์–ด ์ปดํฌ๋„ŒํŠธ ๋น„์ œ์–ด ์ปดํฌ๋„ŒํŠธ
๊ฐ’ ๊ด€๋ฆฌ React ์ƒํƒœ (state) ๊ด€๋ฆฌ DOM ๊ด€๋ฆฌ
์ฝ”๋“œ ๋ณต์žก๋„ ์ƒ๋Œ€์ ์œผ๋กœ ๋ณต์žก ์ƒ๋Œ€์ ์œผ๋กœ ๊ฐ„๋‹จ
์ ‘๊ทผ ๋ฐฉ์‹ state, onChange ์‚ฌ์šฉ ref ์‚ฌ์šฉ
์‚ฌ์šฉ ์šฉ๋„ ๋™์  ํผ, ์ž…๋ ฅ ๊ฒ€์ฆ ํ•„์š” ์‹œ ๊ฐ„๋‹จํ•œ ํผ

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

useTransition ์–ธ์ œ ์“ธ๊นŒ?  (1) 2024.11.07