# Event Emitter utils for any where


The Emitter can be used to expose an Event to the public to fire it from the insides.

## Install

```shell
yarn add @white-matrix/event-emitter
```

## Usage

### Step1： Register emitter event

```typescript
import { Emitter } from '@white-matrix/event-emitter';

type UserInfoUpdateType = 'update' | 'clear';
export interface UserInfoUpdateEvent {
  type: UserInfoUpdateType;
  // data: any
}

export const userInfoUpdateEmitter = new Emitter<UserInfoUpdateEvent>();
```

### Step2: Listener on ui

```typescript
useEffect(() => {
   const event = userInfoUpdateEmitter.event((e) => {
     if (e.type === 'clear') {
       // clear user info in global state
     } else {
       // update user info in global state
     }
   });
   return () => {
     event.dispose();
   };
}, []);
```

### Step3: Fire event
```typescript
userInfoUpdateEmitter.fire({ type: 'clear' });
```