리액트,타입스크립트

React 이벤트 핸들러 전달

JUN0126 2021. 4. 15. 11:34

React 환경에서 이벤트 핸들러 전달 시 유의 사항

컴포넌트 인스턴스로 이벤트 핸들러 전달 시 렌더링마다 함수가 호출되지 않도록 함수를 호출하여 인스턴스로 주지 말고 함수 선언 그대로 만 인스턴스로 넘겨주어야 한다.

 

EX)

const eventHandler = () =>{

      일어날 event

}

<Component eventHandler = { eventHandler } /> // eventHandelr() 함수 호출을 하지않고 핸들러를 넘겨준다.

 

이벤트 핸들러를 props로 받은 하위 컴포넌트는 해당 이벤트 핸들러를 호출하기 위해서는 함수 호출을 진행하여야 한다.

const Component = (props) =>{

    componentEventHandelr(){

       props.eventHandelr()

    }

}

 

하위 컴포넌트에서 이벤트 발생(onClick,onChange 등) 시 이벤트 핸들러를 선언만 하여 이벤트 발생 시 이벤트 핸들러가 실행되도록 한다. 

const Component = (props) =>{

    return <button onClick = { props.eventHandler } > 이벤트 핸들러 </button>

}

 

이벤트 핸들러나 콜백에 어떻게 매개변수를 전달하는 방법은 ? 

이벤트 핸들러에 화살표 함수를 사용하여 감싼 다음에 매개변수를 넘겨줄 수 있다.

 

<button onClick={() => this.handleClick(id)} />

<button onClick={this.handleClick.bind(this, id)} /> 위와 동일

 

참고 

ko.reactjs.org/docs/faq-functions.html