ch10-event
생성하고 구동ch10-event
선택하고 src
폴더에 새 파일 EventPractice.js
생성import React, {Component} from "react";
class EventPractice extends Component {
// state 추가
state = {
message: ''
}
render() {
return (
<div>
<h1>이벤트 연습</h1>
{/* JSX에서는 input, br처럼 원래 단독 태그인 HTML 태그들도 시작과 끝을 명시해야 함 */}
{/* input 태그에서 입력된 값이 변화하면 state의 값에 반영 */}
<input
type="text"
name="message"
placeholder="아무거나 입력해보세요"
value={this.state.message}
onChange={(e) => {
this.setState({message:e.target.value});
}}
/>
{/* 현재 state 값을 alert으로 보여준 후 초기화 */}
<button
onClick={() => {
alert(this.state.message);
this.setState({message:''});
}}
>확인</button>
</div>
);
}
}
export default EventPractice;
App.js
를 다음처럼 수정import React from "react";
import EventPractice from "./EventPractice";
function App() {
return <EventPractice/>;
}
export default App;
ch11-event
생성하고 구동ch11-event
선택하고 src
폴더에 새 파일 EventPractice.js
생성import React, {Component} from "react";
class EventPractice extends Component {
state = {
message: ''
}
// 이벤트 핸들러; 화살표 함수 형태로 메서드 정의
handleChange = (e) => {
this.setState({
message: e.target.value
});
}
handleClick = () => {
alert(this.state.message);
this.setState({
message: ''
});
}
render() {
return (
<div>
<h1>이벤트 연습</h1>
<input
type="text"
name="message"
placeholder="아무거나 입력하세요"
value={this.state.message}
onChange={this.handleChange}
/>
<button onClick={this.handleClick}>확인</button>
</div>
);
}
}
export default EventPractice;
App.js
를 다음처럼 수정import React from "react";
import EventPractice from "./EventPractice";
function App() {
return <EventPractice/>;
}
export default App;
ch12-event
생성하고 구동ch12-event
선택하고 src
폴더에 새 파일 EventPractice.js
생성import React, {Component} from "react";
class EventPractice extends Component {
state = {
username: '',
message:''
}
// 이벤트 핸들러 정의
handleChange = (e) => {
this.setState({
// 객체 안에서 key를 []로 감싸면 그 안에 넣은 레퍼런스의 실제 값이 key 값으로 사용됨
[e.target.name]:e.target.value
});
}
handleClick = () => {
alert(this.state.username + ':' + this.state.message);
this.setState({
username:'',
message:''
});
}
// enter 키 입력시 동작
handleKeyPress = (e) => {
if(e.key === 'Enter') {
this.handleClick();
}
}
render() {
const {username, message} = this.state;
return (
<div>
<h1>이벤트 연습</h1>
<input
type="text"
name="username"
placeholder="사용자명"
value={username}
onChange={this.handleChange}
/>
<input
type="text"
name="message"
placeholder="메시지"
value={message}
onChange={this.handleChange}
onKeyDown={this.handleKeyPress}
/>
<button onClick={this.handleClick}>확인</button>
</div>
);
}
}
export default EventPractice;
App.js
를 다음처럼 수정import React from "react";
import EventPractice from "./EventPractice";
function App() {
return <EventPractice/>;
}
export default App;