[TIL] 20.12.01

HyeRyunยท2020๋…„ 12์›” 1์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
23/48

๐Ÿง ๋‹˜ ์˜ค๋Š˜ ๋ญํ•จ?

  • ๋ฆฌ์•กํŠธ ํ† ์ด ํ”„๋กœ์ ํŠธ '์•Œ๋ฐ”๋น„๋ฅผ ๊ณ„์‚ฐํ•ด์ค˜' ๊ฐœ๋ฐœ
    -> ๊ทธ๋™์•ˆ ์‹œ๊ธ‰, ์ผ์ผ ๊ทผ๋ฌด์‹œ๊ฐ„, ์ฃผ๋‹น ๊ทผ๋ฌด ์ผ์ˆ˜์˜ ์ž…๋ ฅ๊ฐ’์„ ๋ฐ”๊พธ๋Š” ๋ถ€๋ถ„์—์„œ ๋ง‰ํ˜”๋Š”๋ฐ ํ•ด๊ฒฐํ•จ.

parent component

// AlbaCalc.jsx
const handleUpdate = (e) => {
    setField({
      ...field,
      [e.target.name]: e.target.value,
    });
  };

// (code...

<FormInput name='wage' value={field.wage} onChange={handleUpdate} />

์—ฌ๊ธฐ์„œ FormInput ์ปดํฌ๋„ŒํŠธ์— onChange๋ฅผ props๋กœ ๋„˜๊ฒจ์คฌ๋‹ค.

child component

// FormInput.jsx
const FormInput = React.memo(({ value, name, onChange }) => {
  return (
    <>
      <form>
        <div className='labelBox'>
          <label className='labelInfo'>
            <h3>{name}</h3>
            <input
              name={[name]}
              type='text'
              min='1'
              value={value}
              onChange={onChange} // ์—ฌ๊ธฐ ๋ถ€๋ถ„
            />
          </label>
        </div>
      </form>
    </>
  );
});

์—ฌ๊ธฐ์—์„œ ๋ง‰ํžŒ๊ฑฐ์˜€๋Š”๋ฐ.. change ๊ด€๋ จ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•  ๊ฒƒ๋„ ์—†์—ˆ๋‹ค. ๊ทธ๋ƒฅ props๋กœ ๋„˜๊ฒจ ๋ฐ›์€ onChange๋ฅผ ๊ฐ€์ ธ๋‹ค ์“ฐ๋ฉด ๋˜๋Š”๊ฑฐ์˜€๋‹ค. ์ด๋ ‡๊ฒŒ ํ™ฉ๋‹นํ•  ์ˆ˜๊ฐ€. ๋‚œ ๋ญ˜ ๋” ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ..


์ด์ œ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์€ ์™„์„ฑํ–ˆ์œผ๋‹ˆ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ๋„ฃ์–ด์•ผ๊ฒ ๋‹ค ๐Ÿ˜Š

โœ๏ธ ์•ž์œผ๋กœ์˜ ๊ณ„ํš

  • ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐฑ ๋‹จ์œ„๋กœ ์ž˜๋ผ์„œ ์ฝค๋งˆ ์ฐ์–ด์ฃผ๊ธฐ
  • ์„ธ๊ธˆ ์ ์šฉ
  • ์ฃผํœด์ˆ˜๋‹น ์ ์šฉ
  • bootstrap ์ ์šฉ
  • ๊ฒฐ๊ณผ๊ฐ’ ๊ณ„์‚ฐ ๋ฒ„ํŠผ ํด๋ฆญํ•˜๋ฉด ์ดํŽ™ํŠธ ์ถ”๊ฐ€

โœจ ๋Š๋‚€์ ์€?

์ด๋ฒคํŠธ ๋ฐœ์ƒ ์ฒ˜๋ฆฌ๊ฐ€ ์ƒ๊ฐ๋ณด๋‹ค ์–ด๋ ต๋‹ค. ๊ทธ๋ž˜๋„ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋ฐ๋กœ ๊ตฌํ˜„์ด ๋˜๊ณ  ์žˆ์–ด์„œ ๋ฟŒ๋“ฏํ•˜๋‹ค. ๋‚ด์ผ์€ ์„ธ๊ธˆ ์ ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์™„์„ฑํ•ด์•ผ์ง€.

profile
๊ฐœ๋ฐœ๊ฐœ๋ฐœ

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