리액트 이벤트 핸들링

김민지·2020년 6월 17일
0

React

목록 보기
1/2

이벤트 핸들링
리액트의 이벤트 시스템은 HTML 이벤트와 인터페이스가 동일하기 때문에 사용법이 꽤 비슷하다.

 <button onClick={() => {
            this.setState({
              number: this.state.number + 1
            })
          }
        }>더하기</button>

사용법은 일반 HTML에서 이벤트를작성하는 것과 비슷함
주의사항
이벤트 이름은 camelCase로 작성한다.
이벤트에 실행할 자바스크립트 코드를 전달하는 것이 아니라, 함수 형태의 값을 전달한다.
DOM 요소에만 이벤트를 설정할 수 있다.

이벤트의 종류
Clipboard
Composition
Keyboard
Focus
Form
Mouse
Selection
Touch
Wheel
Animation
Transition
등등이 있다. 참조(https://facebook.github.io/react/docs/events.html)
onChange 이벤트
onChange 이벤트는 특히 input태그와 짝을 이루어 쓰이는데 인자로 이벤트 객체를 받는다. 이 객체는 SyntheticEvent로 웹 브라우저의 네이티브 이벤트를 감싸는 객체이며 이 객체의 target의 value로 접근하면 input태그의 값에 접근할 수 있다.

<input 
   type=”text”
   name=”message”
   value={this.state.message}
   onChange={
      (e) => {
        this.setState({
          state: e.target.value
      })
     }
   }
 />

input 여러개 핸들링
input 여러 개를 다루려면 여러 메서드를 만들 수 있겠지만 event 객체를 활용하여 더 쉽게 처리할 수 있다. event.target.name값을 사용하면 된다. onChange 이벤트 핸들러에서 event,target.name은 해당 input의 name을 가리킨다.

handleChange = (e) => {
  this.setState({
    [e.target.name]: e.target.value
  });
}

 <input 
   type=”text”
   name=”username”
   value={this.state.username}
   onChange={this.handleChange}
 />
 <input 
   type=”text”
   name=”message”
   value={this.state.message}
   onChange={this.handleChange}
  />

handleChange 내용 안에서 [] 안에 있는 값을 key 값으로 사용한다는것이 핵심이다.
리액트에서 이벤트를 다루는 것은 순수 자바스크립트와 비슷하다

profile
Welcome~!

0개의 댓글