728x90
OnChange 이벤트 설정
- EventPractice 컴포넌트에 input요소를 렌더링 하는 코드와 해당 요소에 onChange 이벤트를 설정
-
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); //해당 콘솔에 이벤트를 출력(e= SyntheticEvent로 웹브라우저의 네이티브 이벤트를 감싸는 객체(네이티브 이벤트와 인터페이스가 같으므로 순수 자바스크립트에서 HTML이벤트를 다룰떄와 똑같이 사용)) //SyntheticEvent는 네이티브 이벤트와 달리 이벤트가끝나고 나면 이벤트가 초기화 되어 정보를 참조할수 없다. //ex)0.5초뒤에 더이상 e객체 참조 불가능->비동기적으로 객체참조 하고 싶을 경우 e.persist() 함수를 호출해야 한다. console.log(e.target.value);//바뀌는 값을 콘솔에 출력 }} /> </div> ); } } export default EventPractice; e객체는 SyntheticEvent로 웹브라우저의 네이티브 이벤트를 감싸는 객체이고 이것이 콘솔에 찍힌다.
- SyntheticEvent는 이벤트가 끝나고 나면 이벤트가 초기화 되어 정보를 참조 불가능
- 만약 비동기적으로 이벤트 객체를 참조하고 싶다면 e.persist()함수를 호출해야된다.
State에 Input값 담기
- 생성자 메서드인 constructor에서 state 초깃값을 설정하고, 이벤트 핸들링 함수 내부에서 this.setState메소드를 호출하여 state를 업데이트
- input의 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={ //이벤트 핸들링 함수 내부에서 this.setState메소드를 호출하여 state업데이트 (e) => { this.setState({ message: e.target.value, }); } } /> </div> ); } } export default EventPractice;
버튼을 누를 때 Comment값을 공백으로 설정
- input요소 코드 아래쪽에 버튼을 하나 만들고 클릭 이벤트가 발생하게 되면 현재 comment값을 메시지 박스로 띄운후 comment값을 공백으로 설정
-
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={ //이벤트 핸들링 함수 내부에서 this.setState메소드를 호출하여 state업데이트 (e) => { this.setState({ message: e.target.value, }); } } /> <button onClick={() => { //버튼 클릭시 현재 commnet값을 출력후 comment 공백으로 설정 alert(this.state.message); this.setState({ message: "", }); }} > 확인 </button> </div> ); } } export default EventPractice; 
728x90
'리액트 > 이벤트핸들링' 카테고리의 다른 글
| ch06.함수형 컴포넌트로 구현 (0) | 2021.08.10 |
|---|---|
| ch05.Input 여러 개 다루기,OnKeyPress 이벤트 핸들링 (0) | 2021.08.10 |
| ch04.임의 메소드 만들기 (0) | 2021.08.10 |
| ch02.예제로 이벤트 핸들링 익히기 (0) | 2021.08.02 |
| ch01.리액트의 이벤트 시스템 (0) | 2021.08.02 |