티스토리 뷰
이벤트
이벤트는 카멜표기법으로 명명한다.
이벤트는 DOM 요소에만 적용 가능하다.
// DOM 적용 사례
<input onClick={this.props.onClick} />
Component 에 자체적으로 설정할 수 없다.
아래를 예시를 보면, Test에 onClick 이라는 props를 전달한다는 의미다.
onClick 이벤트가 아님을 주의하자!
// DOM 적용 사례
<Test onClick={data} />
false를 반환해도 기본 동작을 막을 수 없으며, 반드시 preventDefault를 명시적으로 호출해야 한다.
function returnFalse(e) {
e.preventDefault();
}
이벤트 - 클래스형 컴포넌트
바벨 transform-class-properties 문법으로 선언할 경우, constructor를 선언하는것 보다 간편하게 사용할 수 있다.
# 파일 : PracEventClass.js
import React, { Component } from 'react';
class PracEventClass extends Component {
// constructor(props) {
// super(props);
// }
state = {
msg: ''
}
eventChange = (e) => {
this.setState({
msg: e.target.value
})
}
eventClick = (e) => {
this.setState({
msg: ''
});
}
render() {
return (
<div>
React Event - Class
<div>
<input
type='text'
name='msg'
value={this.state.msg}
onChange={this.eventChange}
/>
<hr />
<button onClick={this.eventClick}
>Reset</button>
</div>
</div>
);
}
}
export default PracEventClass;
이벤트 - 함수형 컴포넌트
useState() 에 객체를 넣어 좀 더 간결하게 표현 가능하다.
input 엘리먼트를 중복으로 제어해야할 때, 각 엘리먼트에 name 어트리뷰트를 추가하고 event.target.name 값을 통해 핸들러가 어떤 작업을 할 지 선택할 수 있게 해주면 훨씬 유용하게 활용할 수 있다.
# 파일 : PracEventFunc.js
import React, { useState } from 'react';
const PracEventFunc = () => {
// useState에 객체를 넣어 사용 가능
const [form, setForm] = useState({
name: '',
msg: ''
});
const { name, msg } = form;
const onChange = (e) => {
const makeForm = {
...form, // ES6는 spread syntax 배열에서 지원하여 쉽게 사용 가능하다!
[e.target.name]: e.target.value
};
setForm(makeForm);
};
const onClick = () => {
setForm({
name: '',
msg: ''
})
}
return (
<div>
React Event - Function
<div>
이름 : <input
type='text'
name='name'
value={name}
onChange={onChange}
/>
<br />
입력값 : <input
type='text'
name='msg'
value={msg}
onChange={onChange}
/>
<hr />
<button onClick={onClick}>Reset</button>
</div>
</div>
);
};
export default PracEventFunc;
*참고
리액트 공식 사이트-합성 이벤트(SyntheticEvent) [바로가기]
'프로그래밍 > React' 카테고리의 다른 글
ReactJS useState를 이용한 toggle 구현 방법 (0) | 2021.09.14 |
---|---|
React map 함수와 key 에 대해서 알아보자 (0) | 2021.09.02 |
React 컴포넌트 / props / state 에 대해서 알아보자 (1) | 2021.09.01 |
React Developer Tools 크롬 확장프로그램 활용 방법 (1) | 2021.08.27 |
React 생명주기(라이프사이클) 메서드 알아보기 (0) | 2021.08.26 |
댓글