๐Ÿ’ป My Work/๐Ÿ”ฅ React

[React/JS] useState - ์—ฌ๋Ÿฌ ๊ฐœ์˜ input ์ƒํƒœ ๊ด€๋ฆฌํ•˜๊ธฐ

Jaeseo Kim 2022. 12. 15. 16:34

์ €๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ์„ ์˜ˆ์‹œ๋กœ ๊ตฌํ˜„ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

์šฐ์„  ์ตœ์ข… ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ๐Ÿ˜Š

import * as React from "react";

export default function PasswordChange() {
  // input ์ปดํฌ๋„ŒํŠธ์˜ id ์„ ์–ธ
  // ํ˜„์žฌ ๋น„๋ฐ€๋ฒˆํ˜ธ
  const CURRENT_PASSWORD = "currentPassword";
  // ์ƒˆ ๋น„๋ฐ€๋ฒˆํ˜ธ
  const NEW_PASSWORD = "newPassword";
  // ์ƒˆ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ
  const NEW_PASSWORD_CONFIRM = "newPasswordConfirm";

  // input ์ปดํฌ๋„ŒํŠธ์— ๋งž๋Š” id๋ณ€์ˆ˜ ๋“ค
  const [inputs, setInputs] = React.useState({
    currentPassword: "",
    newPassword: "",
    newPasswordConfirm: ""
  });

  const { currentPassword, newPassword, newPasswordConfirm } = inputs; // inputs์—์„œ ๋น„๊ตฌ์กฐํ™” ํ• ๋‹น์„ ํ†ตํ•ด ๊ฐ’ ์ถ”์ถœ

  // ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ
  const handleInput = (event) => {
    const { id, value } = event.target;

    setInputs({
      ...inputs, // ๊ธฐ์กด์˜ input ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•œ ๋’ค
      [id]: value // id ํ‚ค๋ฅผ ๊ฐ€์ง„ input๋งŒ์˜ value๋กœ ์„ค์ •
    });
  };

  return (
    <div>
      <div>
        <input
          id={CURRENT_PASSWORD}
          placeholder="๋น„๋ฐ€๋ฒˆํ˜ธ"
          value={currentPassword}
          onChange={handleInput}
        />
      </div>
      <div>
        <input
          id={NEW_PASSWORD}
          placeholder="์ƒˆ ๋น„๋ฐ€๋ฒˆํ˜ธ"
          value={newPassword}
          onChange={handleInput}
        />
      </div>
      <div>
        <input
          id={NEW_PASSWORD_CONFIRM}
          placeholder="์ƒˆ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ"
          value={newPasswordConfirm}
          onChange={handleInput}
        />
      </div>
    </div>
  );
}

 

 

ํ•„์š”ํ•œ ์ปดํฌ๋„ŒํŠธ ๊ตฌํ˜„

PasswordChange.js

export default function PasswordChange() {

  return (
    <div>
      <div>
        <input placeholder="๋น„๋ฐ€๋ฒˆํ˜ธ" />
      </div>
      <div>
        <input placeholder="์ƒˆ ๋น„๋ฐ€๋ฒˆํ˜ธ" />
      </div>
      <div>
        <input placeholder="์ƒˆ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ" />
      </div>
    </div>
  );
}

 

 

input ์ปดํฌ๋„ŒํŠธ์— id ์„ ์–ธ

๊ฐ input์˜ id๋ฅผ ์„ ์–ธํ•ด์ค๋‹ˆ๋‹ค.

PasswordChange.js

export default function PasswordChange() {
  // input ์ปดํฌ๋„ŒํŠธ์˜ id ์„ ์–ธ
  // ํ˜„์žฌ ๋น„๋ฐ€๋ฒˆํ˜ธ
  const CURRENT_PASSWORD = "currentPassword";
  // ์ƒˆ ๋น„๋ฐ€๋ฒˆํ˜ธ
  const NEW_PASSWORD = "newPassword";
  // ์ƒˆ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ
  const NEW_PASSWORD_CONFIRM = "newPasswordConfirm";

  return (
    <div>
      <div>
        <input id={CURRENT_PASSWORD} placeholder="๋น„๋ฐ€๋ฒˆํ˜ธ" />
      </div>
      <div>
        <input id={NEW_PASSWORD} placeholder="์ƒˆ ๋น„๋ฐ€๋ฒˆํ˜ธ" />
      </div>
      <div>
        <input id={NEW_PASSWORD_CONFIRM} placeholder="์ƒˆ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ" />
      </div>
    </div>
  );
}

 

 

์ œ์–ด ํ•จ์ˆ˜ ๊ตฌํ˜„

์ฐธ๊ณ ๋ฅผ ์œ„ํ•ด ์ž…๋ ฅ event.target๋ฅผ ์ฝ˜์†”๋กœ ์ฐ์–ด id ์™€ value ๊ฐ’์„ ํ™•์ธํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

event.target

๐Ÿ“Œ handleInput() ํ•จ์ˆ˜์—์„œ const { id, value } = event.target; ๋กœ id, value๋ฅผ ์ถ”์ถœํ•ด๋ƒ…๋‹ˆ๋‹ค.
import * as React from "react";

export default function PasswordChange() {
  // input ์ปดํฌ๋„ŒํŠธ์˜ id ์„ ์–ธ
  // ํ˜„์žฌ ๋น„๋ฐ€๋ฒˆํ˜ธ
  const CURRENT_PASSWORD = "currentPassword";
  // ์ƒˆ ๋น„๋ฐ€๋ฒˆํ˜ธ
  const NEW_PASSWORD = "newPassword";
  // ์ƒˆ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ
  const NEW_PASSWORD_CONFIRM = "newPasswordConfirm";

  // input ์ปดํฌ๋„ŒํŠธ์— ๋งž๋Š” id๋“ค
  const [inputs, setInputs] = React.useState({
    currentPassword: "",
    newPassword: "",
    newPasswordConfirm: ""
  });

  const { currentPassword, newPassword, newPasswordConfirm } = inputs; // inputs์—์„œ ๋น„๊ตฌ์กฐํ™” ํ• ๋‹น์„ ํ†ตํ•ด ๊ฐ’ ์ถ”์ถœ

  // ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ
  const handleInput = (event) => {
    const { id, value } = event.target;

    setInputs({
      ...inputs, // ๊ธฐ์กด์˜ input ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•œ ๋’ค
      [id]: value // id ํ‚ค๋ฅผ ๊ฐ€์ง„ input๋งŒ์˜ value๋กœ ์„ค์ •
    });
  };

  return (
    <div>
      <div>
        <input
          id={CURRENT_PASSWORD}
          placeholder="๋น„๋ฐ€๋ฒˆํ˜ธ"
          value={currentPassword}
          onChange={handleInput}
        />
      </div>
      <div>
        <input
          id={NEW_PASSWORD}
          placeholder="์ƒˆ ๋น„๋ฐ€๋ฒˆํ˜ธ"
          value={newPassword}
          onChange={handleInput}
        />
      </div>
      <div>
        <input
          id={NEW_PASSWORD_CONFIRM}
          placeholder="์ƒˆ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ"
          value={newPasswordConfirm}
          onChange={handleInput}
        />
      </div>
    </div>
  );
}

 

 

๋น„ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ...! ๐Ÿค”

๊ฐ value์— ๋งž๋Š” ํ•จ์ˆ˜๋ฅผ ์ผ์ผ์ด ์ž‘์„ฑํ•ด์ฃผ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฒˆ๊ฑฐ๋กœ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜Š๐Ÿ˜Š

import * as React from "react";

export default function App() {
  // ๋น„๋ฐ€๋ฒˆํ˜ธ
  const [currentPassword, setCurrentPassword] = React.useState("");
  // ์ƒˆ ๋น„๋ฐ€๋ฒˆํ˜ธ
  const [newPassword, setNewPassword] = React.useState("");
  // ์ƒˆ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ
  const [newPasswordConfirm, setNewPasswordConfirm] = React.useState("");

  // ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ ์ œ์–ด ํ•จ์ˆ˜
  const handleCurrentPassword = (event) => {
    setCurrentPassword(event.target.value);
  };
  // ์ƒˆ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ ์ œ์–ด ํ•จ์ˆ˜
  const handleNewPassword = (event) => {
    setNewPassword(event.target.value);
  };
  // ์ƒˆ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ ์ž…๋ ฅ ์ œ์–ด ํ•จ์ˆ˜
  const handleNewPasswordConfirm = (event) => {
    setNewPasswordConfirm(event.target.value);
  };

  return (
    <div>
      <div>
        <input
          placeholder="๋น„๋ฐ€๋ฒˆํ˜ธ"
          value={currentPassword}
          onChange={handleCurrentPassword}
        />
      </div>
      <div>
        <input
          placeholder="์ƒˆ ๋น„๋ฐ€๋ฒˆํ˜ธ"
          value={newPassword}
          onChange={handleNewPassword}
        />
      </div>
      <div>
        <input
          placeholder="์ƒˆ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ"
          value={newPasswordConfirm}
          onChange={handleNewPasswordConfirm}
        />
      </div>
    </div>
  );
}

 

๊ตฟ!