์น ๋ธ๋ผ์ฐ์ ์์ DOM ์์๋ค๊ณผ ์ํธ ์์ฉํ๋ ๊ฒ์ ์ด๋ฒคํธ๋ผ๊ณ ํ๋ค. ๋ฆฌ์กํธ์์ ์ด๋ฒคํธ๋ฅผ ๋ค๋ฃจ๋ ๊ฒ์ ์์ ์๋ฐ์คํฌ๋ฆฝํธ ๋๋ ์ ์ด์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ด๋ฒคํธ๋ฅผ ๋ค๋ฃจ๋ ๊ฒ๊ณผ ๋น์ทํ๋ค.
๋ฆฌ์กํธ ์ฅ์ ์ค ํ๋๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ต์ํ๋ค๋ฉด ์ฝ๊ฒ ํ์ฉํ ์ ์๋ค๋ ์ ์ด๋ค. ๋ฐ๋ผ์ HTML DOM Event๋ฅผ ์๊ณ ์๋ค๋ฉด ๋ฆฌ์กํธ์ ์ปดํฌ๋ํธ ์ด๋ฒคํธ๋ ์ฝ๊ฒ ๋ค๋ฃฐ ์ ์์ ๊ฒ์ด๋ค. ๐คจ
์ด๋ฒคํธ ์ด๋ฆ์ ์นด๋ฉ ํ๊ธฐ๋ฒ์ผ๋ก ์ฌ์ฉํ๋ค.
(์) onClick, onKeyUp, onChange
์ด๋ฒคํธ์ ์คํ ํ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ด ์๋๋ผ ํจ์ ํํ์ ๊ฐ์ ์ ๋ฌ.
HTML์์ ์ด๋ฒคํธ๋ฅผ ์ค์ ํ ๋ ํฐ๋ฐ์ดํ ์์ ์คํํ ์ฝ๋๋ฅผ ๋ฃ์์ง๋ง, ๋ฆฌ์กํธ์์๋ ํจ์ ํํ์ ๊ฐ์ฒด๋ฅผ ์ ๋ฌํ๋ค.
DOM ์์์๋ง ์ด๋ฒคํธ๋ฅผ ์ค์ ํ ์ ์๋ค.
(์) div, button, input, form, span ๋ฑ ๊ฐ์ DOM ์์์๋ง ๊ฐ๋ฅ
์ฐ๋ฆฌ๊ฐ ์ง์ ๋ง๋ ์ปดํฌ๋ํธ์์๋ ์ค์ ํ ์ ์๋ค.
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์ ๊ฐ๋ฅดํจ๋ค.