Mobile/react-native
[react-native] EventEmitter
춘햄
2024. 2. 13. 17:53
React Native의 EventEmitter는 컴포넌트나 모듈 간의 이벤트 기반 통신을 가능하게 하는 클래스이다.
이 클래스를 활용하여, 개발자는 특정 이벤트가 발생했을 때 리스너에 알림을 보낼 수 있다.
EventEmitter는 주로 네이티브 모듈과 JavaScript 간의 이벤트 통신에 사용되지만, React Native 애플리케이션 내의 다른 용도로도 사용될 수 있다.
이 글에서는 해당 이벤트를 위해 eventemitter3 라는 라이브러리를 사용하려고 한다.
yarn add eventemitter3
EventEmitter 사용법
- EventEmitter 인스턴스 생성: EventEmitter의 인스턴스를 생성하여 이벤트를 발생시키고, 이에 대한 리스너를 등록한다.
- 이벤트 리스너 등록: addListener 메소드를 사용하여 특정 이벤트에 대한 리스너를 등록한다.
- 이벤트 발생시키기: emit 메소드를 사용하여 이벤트를 발생시킨다. 이 때, 리스너에 전달할 데이터도 함께 보낼 수 있다.
- 이벤트 리스너 제거: 더 이상 이벤트 리스너가 필요 없을 때는 removeListener 메소드를 사용하여 리스너를 제거한다.
예제 코드
아래의 예제 코드는 EventEmitter를 사용하여 커스텀 이벤트를 발생시키고, 해당 이벤트에 대한 리스너를 등록 및 해제하는 방법을 보여준다.
import EventEmitter3 from 'eventemitter3';
// EventEmitter 인스턴스 생성
const events = new EventEmitter3();
// 이벤트 리스너 등록
const onMyEvent = (message) => {
console.log(`이벤트 수신: ${message}`);
};
events.on('myEvent', onMyEvent);
// 이벤트 발생시키기
events.emit('myEvent', 'Hello, EventEmitter3!');
// 이벤트 리스너 제거
events.off('myEvent', onMyEvent);
이 예제에서, EventEmitter 인스턴스는 myEmitter라는 변수에 저장된다.
그리고 myEvent라는 이름의 이벤트에 대한 리스너로 myListener 함수가 등록된다.
이 리스너는 이벤트가 발생할 때마다 호출되어, 이벤트와 함께 전달된 데이터를 콘솔에 출력한다. 마지막으로, removeListener 메소드를 사용하여 더 이상 필요 없는 이벤트 리스너를 제거한다.
EventEmitter는 React Native 애플리케이션에서 강력하고 유연한 이벤트 통신 메커니즘을 제공한다.
이를 통해 개발자는 애플리케이션의 다양한 부분 간에 효율적으로 데이터를 전달하고 상태 변경을 관리할 수 있다.