react-event-connector
Version:
A library to connect react components
75 lines (57 loc) ⢠1.81 kB
Markdown
//img.shields.io/npm/v/react-event-connector)](https://www.npmjs.com/package/react-event-connector)
[](https://bundlephobia.com/package/react-event-connector)
[](https://github.com/nazamov/react-event-connector/blob/main/LICENSE)
A zero-dependency React utility for lightweight component communication using custom events.
ā No config, provider, context - JUST USAGE
ā Avoid prop drilling
ā Decouple components
ā Simple pub/sub model
ā Full TypeScript support
ā Tiny footprint (~1kB)
## Installation
````bash
npm install react-event-connector
# or
yarn add react-event-connector
# or
pnpm add react-event-connector
```tsx
const { useEmitter, useSubscriber } = 'react-event-connector'
// 2. Emit events from any component
const Button = () => {
const emit = useEmitter('click-event');
return (
<button onClick={() => emit({ timestamp: Date.now() })}>
Click Me
</button>
);
};
// 3. Subscribe anywhere in your app
const Logger = () => {
useSubscriber('click-event', (data) => {
console.log('Button clicked!', data);
});
return null;
};
// 4. Use anywhere (no provider needed!)
const App = () => (
<>
<Button />
<Logger />
</>
);
````
```tsx
interface YourInterface = {
firstProp: string;
secondProp: number;
}
const emitter = useEmmiter<YourInterface>('your-event');
emitter({ firstProp: 'your text', secondProp: 12345});
useSubscriber<YourInterface>('your-event', (data) => {
console.log('your data', data.firstProp)
});
```
[![npm version](https: