[리액트(React) Study Log] [Person App-009] Handling Event with Methods

 

1. JSX 에서의 Event 개요

 - nomal javascript 에서 event 를 만들때는 onclick, JSX 에서는 onClick(CamelCase 사용)

 - switchNameHandler 함수를 정의하고, JSX 에서 정의된 함수를 사용함.

 - <button onClick={this.switchNameHandler}> 형태로 사용하는데, 함수명 뒤에 절대 괄호를 붙이지 말 것.(함수 실행이 아니라 함수 지정을 위해서 사용되는 함수의 reference 만 전달해야 함.) this.switchNameHandler() 형태로 사용하면, 함수를 지정하는게 아니라 즉시 실행되기 때문에 react component mount 되는 과정에서 switchNameHandler 함수가 실행되고, 이 함수는 state 를 변화시키기 때문에, state 가 변화되면 JSX re-rendering 되고 다시 switchNameHandler 가 실행되는 무한 루프에 빠지게 됨.

(javascript 에서 함수뒤 괄호는 'execute(실행)' 을 의미.

(, 함수 지정시 argument 전달이 필요한 경우는 괄호 사용이 필요한 경우도 있음. 이때는 (xxx) => this.switchNameHandler(xxx) 형태로 사용. (this.switchNameHandler(xxx) 형태 사용은 안 됨.)

 

2. event 지정

<button onClick={this.switchNameHandler}>Switch Name</button>

 

3. event 함수 정의

 - 아직은 실제 기능이 아니라 우선 console 에 찍는 함수 내용을 정의

 - state 정의 바로 밑에

switchNameHandler = () => {

    console.log('Was clicked!');

  }

 

4. 브라우져와 콘솔 확인


+ Recent posts