UNPKG

eventbus-z

Version:

Simple event emitter. Global event emitter

166 lines (124 loc) 3.67 kB
<div align="center"> <h1>eventbus-z</h1> <br /> <a href="https://codesandbox.io/s/d5robq">LIVE EXAMPLE</a> </div> --- #### Description + Simple EventBus (emit) + Quick for update. (No need share context/redux with react/vue/angular/etc...) + Top EventBus, can use with mFE + Can use with react/vue/angular/etc... --- #### Usage ```js npm install eventbus-z --save ``` Import the module in the place you want to use: ```js import EventBus from 'eventbus-z' ``` #### Snippet with react ###### simple ```js React.useEffect(() => { EventBus.$on("NAME_ABC", func) // EventBus.$on("NAME_DEF", func2) // clean return function() { EventBus.$off("NAME_ABC", func) //...EventBus.$off("NAME_DEF", func2) } }, []) // @ts-ignore const func = (item, xxx) => { // do something alert(item) } // from another element buttonClick = () => { EventBus.$emit("NAME_ABC", 434, 44) // EventBus.$emit("NAME_DEF", [434, 44], 44, "434") // multi value, any type } ``` ###### hook with react ```js import { $on, $off } from 'eventbus-z'; // can use-callback export const useEventBus = (name, callback) => { React.useEffect(() => { $on(name, callback); return function () { $off(name, callback); }; }, [name, callback]); return { name, callback }; }; export default useEventBus; const App = () => { useEventBus('NAME', () => { alert('abcd'); }) return <Child />; } const Child = () => { return <button onClick={() => $emit('NAME')}>Abcd</button> } ``` #### Desciption ```js /** * default global. You just need to use this. */ // notify event data $emit(name, ...restparams) => notify event(name, ...restparams) // listen for event (once time) $once(name, func) => register event one time // listen for event (unique event name) // => prefer use $on(name, func) => register single event (unique) // listen for event (unique event name and cached time) $onCached(name, func, timeCached) => onCached event => [default 100ms] // listen for events => same name and multile registered (need experiences) $onMultiple(name, func) => register event // listen for events (multi listen and cached time) $onCachedMultiple(name, func, timeCached) => onCached event => [default 100ms] // clear all listening for events (global) $off(name, func) => off event and function register $offAll(name) => offAll event by name // clear all listening for events $clearAllEventName(name) => remove all events from all scopes ``` <br /> ```js /** * * split scope events (scopeName) => extends */ // notify event data $scopeEmit(name, scopeName, ...restparams) => notify event // listen for event (once time) $scopeOnce(name, scopeName, func) => register event one time // listen for event (unique event name) $scopeOn(name, scopeName, func) => register single event (unique) // => prefer // listen for event (unique event name and cached time) $scopeOnCached(name, scopeName, func, timeCached) => onCached event => [default 100ms] // listen for events => same name and multile registered (need experiences) $scopeOnMultiple(name, scopeName, func) => register event // listen for events (multi listen and cached time) $scopeOnCachedMultiple(name, scopeName, func) => register event // clean listening for events on scope $scopeOff(name, scopeName, func) => off event and function register $scopeOffAll(name, scopeName) => offAll event by name ``` <br /> #### Run <a href="https://codesandbox.io/s/d5robq">LIVE EXAMPLE</a> ```js npm install ``` ```js npm run dev npm run start ``` #### License MIT