1.0.4 • Published 4 months ago
flow-event v1.0.4
Install:
npm install flow-event
import EventEmitter, { ISupcription } from 'flow-event'
const event = new EventEmitter()
type T = { title: string }
event.on<T>('message', (data) => { data.title })
event.once<T>('message', (data) => { data.title })
event.addListener<T>('message', (data) => { data.title })
event.emit<T>('message', { title: 'abc' })
event.remove('message')
event.removeAll()
event.removeAllListeners()
import { Text, View } from 'react-native'
import React, { useEffect, useState, Component } from 'react'
type Data = [number, number]
export function ExampleHook() {
const [count, setCount] = useState(0)
useEffect(() => {
const subcription =
event.addListener<Data>('name', (e, s) => setCount(e))
return () => {
subcription.remove()
}
}, [])
return (
<View>
<Text onPress={() => event.emit<number>('name', 123)}>
example {count}
</Text>
</View>
)
}
export class ExampleClass extends Component<{ count }, any> {
constructor(props) {
super(props)
this.state = {
count: 0
}
}
subcription: ISupcription
componentDidMount(): void {
this.subcription =
event.addListener<number>('name', e => this.setState({ count: e }))
}
componentWillUnmount(): void {
this.subcription.remove()
}
render() {
const { count } = this.state
return (
<div>
example {count}
</div>
)
}
}