๐Ÿ“š ๋ฆฌ์•กํŠธ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง์— ๋Œ€ํ•˜์—ฌ

leehyunjuยท2021๋…„ 6์›” 20์ผ
0
post-thumbnail

์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ DOM ์š”์†Œ๋“ค๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๊ฒƒ์„ ์ด๋ฒคํŠธ๋ผ๊ณ  ํ•œ๋‹ค. ๋ฆฌ์•กํŠธ์—์„œ ์ด๋ฒคํŠธ๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์€ ์ˆœ์ˆ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋˜๋Š” ์ œ์ด์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ด๋ฒคํŠธ๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ฒƒ๊ณผ ๋น„์Šทํ•˜๋‹ค.

๋ฆฌ์•กํŠธ ์žฅ์  ์ค‘ ํ•˜๋‚˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ์ต์ˆ™ํ•˜๋‹ค๋ฉด ์‰ฝ๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค. ๋”ฐ๋ผ์„œ HTML DOM Event๋ฅผ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ๋ฆฌ์•กํŠธ์˜ ์ปดํฌ๋„ŒํŠธ ์ด๋ฒคํŠธ๋„ ์‰ฝ๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๐Ÿคจ


๐Ÿ“Œ ์ด๋ฒคํŠธ ์‚ฌ์šฉ์‹œ ์ฃผ์˜ ์‚ฌํ•ญ

  1. ์ด๋ฒคํŠธ ์ด๋ฆ„์€ ์นด๋ฉœ ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
    (์˜ˆ) onClick, onKeyUp, onChange

  2. ์ด๋ฒคํŠธ์— ์‹คํ–‰ ํ•  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ•จ์ˆ˜ ํ˜•ํƒœ์˜ ๊ฐ’์„ ์ „๋‹ฌ.
    HTML์—์„œ ์ด๋ฒคํŠธ๋ฅผ ์„ค์ •ํ•  ๋•Œ ํฐ๋”ฐ์˜ดํ‘œ ์•ˆ์— ์‹คํ–‰ํ•  ์ฝ”๋“œ๋ฅผ ๋„ฃ์—ˆ์ง€๋งŒ, ๋ฆฌ์•กํŠธ์—์„œ๋Š” ํ•จ์ˆ˜ ํ˜•ํƒœ์˜ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•œ๋‹ค.

  3. DOM ์š”์†Œ์—๋งŒ ์ด๋ฒคํŠธ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
    (์˜ˆ) div, button, input, form, span ๋“ฑ ๊ฐ™์€ DOM ์š”์†Œ์—๋งŒ ๊ฐ€๋Šฅ
    ์šฐ๋ฆฌ๊ฐ€ ์ง์ ‘ ๋งŒ๋“  ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” ์„ค์ •ํ•  ์ˆ˜ ์—†๋‹ค.

๐Ÿ“Œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ์ด๋ฒคํŠธ

  • onChange
  • onClick
  • onKeyUp
  • onDoubleClick
  • onRemove
import React, { useState } from "react";

const EventPractice = () => {
  //์‚ฌ์šฉ์ž๋ช…
  const [username, setUsername] = useState("");
  
  //๋ฉ”์‹œ์ง€๋‚ด์šฉ
  const [message, setMessage] = useState("");
  
  //๋ณ€๊ฒฝ ๋  ์ด๋ฒคํŠธ
  const onChangeUsername = (e) => setUsername(e.target.value);
  const onChangeMsg = (e) => setMessage(e.target.value);

  const onClick = () => {
    alert(username + ":" + message + "์ž…๋‹ˆ๋‹ค.");
    setUsername("");
    setMessage("");
  };
  const onKeyPress = (e) => {
    if (e.key === "Enter") {
      onClick();
    }
  };
  return (
    <div>
      <input
        type="text"
        name="username"
        placeholder="์‚ฌ์šฉ์ž ๋ช…"
        value={username}
        onChange={onChangeUsername}
      />
      :
      <input
        type="text"
        name="message"
        placeholder="๋ฉ”์„ธ์ง€๋‚ด์šฉ"
        value={message}
        onChange={onChangeMsg}
        onKeyPress={onKeyPress}
      />
      <button onClick={onClick}>ํ™•์ธ</button>
    </div>
  );
};
export default EventPractice;

์—ฌ๋Ÿฌ๊ฐœ input์„ ๋‹ค๋ฃจ๋ ค๋ฉด ๋ฐ”๋กœ event ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค. e.target.name ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๋Š”๋ฐ, onChange ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์—์„œ e.target.name์€ ํ•ด๋‹น ์ธํ’‹์˜ name์„ ๊ฐ€๋ฅดํ‚จ๋‹ค.

profile
์•„๋Š‘ํ•œ ๋‡Œ๊ณต๊ฐ„ ๐Ÿง 

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