UNPKG

flow-event

Version:
66 lines (60 loc) 1.59 kB
Install: ```js npm install flow-event ``` ```ts 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> ) } } ```