3-1.이벤트핸들링익히기
-input 여러개 다루기
///*** keypoint: input의 name 값 key로 가져오기
handleChage = (e) =>{
[e.target.name] : e.target.value
//message:e.target.value
//username:e.target.value
}
///EventPractice.js
import React, { Component } from "react";
class EventPractice extends Component {
state = {
username: "",
message: "",
};
handleChange = (e) => {
this.setState({
[e.target.name]: e.target.value,
});
};
handleClick = (e) => {
alert(this.state.username + ":" + this.state.message);
this.setState({
username: "",
message: "",
});
};
render() {
return (
<div>
<h1>이벤트연습</h1>
<input
type="text"
name="username"
value={this.state.username}
onChange={this.handleChange}
/>
<input
type="text"
name="message"
value={this.state.message}
onChange={this.handleChange}
/>
<button onClick={this.handleClick}>버튼</button>
</div>
);
}
}
export default EventPractice;
-onkeyPress 이벤트핸들링
import React, { Component } from "react";
class EventPractice extends Component {
state = {
username: "",
message: "",
};
handleChange = (e) => {
this.setState({
[e.target.name]: e.target.value,
});
};
handleClick = (e) => {
alert(this.state.username + ":" + this.state.message);
this.setState({
username: "",
message: "",
});
};
handleKeyPress = (e) => {
if (e.key === "Enter") {
this.handleClick();
}
};
render() {
return (
<div>
<h1>이벤트연습</h1>
<input
type="text"
name="username"
value={this.state.username}
onChange={this.handleChange}
/>
<input
type="text"
name="message"
value={this.state.message}
onChange={this.handleChange}
onKeyPress={this.handleKeyPress}
/>
<button onClick={this.handleClick}>버튼</button>
</div>
);
}
}
export default EventPractice;
-함수형 컴포넌트로 구현하기
import React, { useState } from "react";
const EventPractice = () => {
const [username, setUsername] = useState("");
const [message, setMessage] = useState("");
const onChangeUsername = (e) => setUsername(e.target.value);
const onChangeMessage = (e) => setMessage(e.target.value);
const onClick = () => {
alert(username + ":" + message);
setUsername("");
setMessage("");
};
const onKeyPress = (e) => {
if (e.key === "Enter") {
onClick();
}
};
return (
<div>
<h1>이벤트연습</h1>
<input
type="text"
name="username"
placeholder="사용자명"
value={username}
onChange={onChangeUsername}
/>
<input
type="text"
name="message"
placeholder="아무거나 입력하세요"
value={message}
onChange={onChangeMessage}
onKeyPress={onKeyPress}
/>
<button onClick={onClick}>확인</button>
</div>
);
};
export default EventPractice;
-onChange함수를 하나로 합치고, e.target.name 활용하기 : input이 여러개일 경우 유용
(useState에 객체삽입)
import React, { useState } from "react";
const EventPractice = () => {
const [form, setForm] = useState({
username: "",
message: "",
});
const { username, message } = form;
const onChange = (e) => {
const nextForm = {
...form,
[e.target.name]: e.target.value,
};
setForm(nextForm);
};
const onClick = () => {
alert(username + ":" + message);
setForm({
username: "",
message,
});
};
const onKeyPress = (e) => {
if (e.key === "enter") {
onClick();
}
};
return (
<>
<h1>EventPractice</h1>
<input
type="text"
placeholder="username"
value={username}
name="username"
onChange={onChange}
/>
<input
type="text"
placeholder="meassage"
value={message}
name="message"
onChange={onChange}
onClick={onClick}
/>
<button onKeyPress={onKeyPress}>버튼</button>
</>
);
};
export default EventPractice;
'프론트엔드관련 책예제실습정리 > 리기술요약' 카테고리의 다른 글
컴포넌트 반복 (0) | 2021.06.11 |
---|---|
ref:DOM에 이름달기 (0) | 2021.06.11 |
이벤트핸들링1 (0) | 2021.06.04 |
컴포넌트2 -state (0) | 2021.06.04 |
컴포넌트 1 -component,import, props(prototype) (0) | 2021.06.02 |