- 사용자가 웹 브라우저에서 DOM 요소들과 상호 작용하는 것(버튼 클릭, 키보드 입력, 제출 등)을 이벤트라고 한다.
- React의 이벤트 처리(Event handling) 방식은 DOM의 이벤트 처리 방식과 매우 유사하지만 몇 가지 문법 차이가 있다.
// HTML
<button onclick="handleClick()">Event</button>
// React
<button onClick={handleClick}>Event</button>
function NameForm() {
const [name, setName] = useState("");
const handleChange = (e) => {
setName(e.target.value);
}
return (
<>
<input type="text" value={name} onChange={handleChange}></input>
<h1>{name}</h1>
</>
)
};
<input>
<textarea>
<select>
와 같은 Form 엘리먼트는 사용자의 입력값을 제어하는 데 사용되며 React에서는 이러한 변경될 수 있는 입력값을 state로 관리하고 업데이트한다.function NameForm() {
const [name, setName] = useState("");
const handleChange = (e) => {
setName(e.target.value);
}
return (
<>
<input type="text" value={name} onChange={handleChange}></input>
<button onClick={() => alert(name)}>Button</button>
<h1>{name}</h1>
</>
);
};
<button>
<a>
태그와 같이 주로 사용자의 행동에 따라 애플리케이션이 반응해야 할 때 자주 사용하는 이벤트이다.function SelectFruit() {
const [choice, setChoice] = useState("apple");
const fruits = ["apple", "orange", "pineapple", "strawberry", "grape"];
const options = fruits.map((fruit) => {
return <option value={fruit}>{fruit}</option>;
});
const handleFruit = (e) => {
setChoice(e.target.value
};
return (
<>
<select onChange={handleFruit}>{options}</select>
<h3>You choose "{choice}"</h3>
</>
);
}
<select>
는 사용자가 drop down 목록을 열어 그중 한 가지 옵션을 선택하면 선택된 옵션이 state 변수에 갱신되는 이벤트이다. <button onClick={alert(name)}>Button</button>
*함수는 리턴 값이 없을 때 undefined 를 반환한다.
return (
<div>
...
<button onClick={() => alert(name)}>Button</button>
...
</div>
);
};
const handleClick = () => {
alert(name);
};
return (
<div>
...
<button onClick={handleClick}>Button</button>
...
</div>
);
};