(e) => { } 괄호 속 e가 뭔지도 모르고 쓰고 있었다...
e는 이벤트 객체를 의미한다고 한다.
JavaScript에서 이벤트가 발생했을 때 브라우저에서 자동으로 생성되어 이벤트 핸들러 함수에 전달되는데, React에서도 동일한 방식으로 작동된다고 한다.
// EventPractice.jsx
import React, { Component } from 'react';
class EventPractice extends Component {
render() {
return (
<div>
<h1>이벤트 연습</h1>
</div>
);
}
}
export default EventPractice;
그리고 나서 App 컴포넌트에서 EventPractice를 불러와 렌더링해보자!
// App.jsx
import React from 'react';
import EventPractice from './features/4_EventHandling/EventPractice';
const App = () => {
return <EventPractice />;
};
export default App;

// EventPractice.jsx
import React, { Component } from 'react';
class EventPractice extends Component {
render() {
return (
<div>
<h1>이벤트 연습</h1>
<input
type="text"
name="message"
placeholder="아무거나 입력해 보세요"
onChange={
(e) => {
console.log(e);
}
}
/>
</div>
);
}
}
export default EventPractice;


(+) 만약 비동기적으로 이벤트 객체를 참조할 일이 있다면?
e.persist() 함수를 호출한다.
// EventPractice.jsx의 onChange 수정
onChange={
(e) => {
console.log(e.target.value);
}
}


그럼 값이 바뀔 때마다 바뀌는 값을 콘솔에 기록하는 것을 볼 수 있다.
코드를 저장하고, 인풋에 아무것이나 입력해 보자. 만약 오류 없이 제대로 입력할 수 있다면, state에 텍스트를 잘 담은 것!
import React, { Component } from 'react';
class EventPractice extends Component {
state = {
message: ''
}
render() {
return (
<div>
<h1>이벤트 연습</h1>
<input
type="text"
name="message"
placeholder="아무거나 입력해 보세요"
value={this.state.message}
onChange={
(e) => {
this.setState({
message: e.target.value
})
}
}
/>
</div>
);
}
}
export default EventPractice;
input 요소 코드 아래쪽에 button을 하나 만들고, 클릭 이벤트가 발생하면 현재 comment 값을 메시지 박스로 띄운 후 comment 값을 공백으로 설정한다.
import React, { Component } from 'react';
class EventPractice extends Component {
state = {
message: ''
}
render() {
return (
<div>
<h1>이벤트 연습</h1>
<input
(...)
/>
<button onClick={
() => {
alert(this.state.message);
this.setState({
message: ''
});
}
}>확인</button>
</div>
);
}
}
export default EventPractice;

alert를 사용해 현재 message 값을 화면에 표시하게 함.