miis
The
miis
is a tiny functional event subscriber and dispatcher.
Features
- Tiny: weighs less than 1kb gzipped
- Plentiful: a special "*" event type listens to all events
- Scope: isolate different listening environments by setting scope
Install
This project need node and npm.
npm install miis --save
or
pnpm add miis --save
Useage
import miis from "miis";
miis.subscribe("a", (...args) => {
console.log("a event call"); // a event call
console.log(...args); /// 1, 2, 3
});
miis.dispatch("a", 1, 2, 3);
And it's so easy to operate with react. Here is a demo.
import * as React from "react";
import "./style.css";
import miis from "miis";
export default function App() {
const [count, setCount] = React.useState(0);
React.useEffect(() => {
return miis.subscribe("a", () => {
setCount(count + 1);
});
}, [count]);
const handleClick = () => {
miis.dispatch("a");
};
return (
<div>
<button onClick={handleClick}>Dispatch A</button>
<p>Count: {count}</p>
</div>
);
}
You could unsubscribe the event lisenter with the result of subscribe.
import miis from "miis";
const unsubscribe = miis.subscribe("a", () => {
console.log("a event call");
});
unsubscribe();
miis.dispatch("a"); // not work
API
subscirbe
Register an event listenter for the given name.
Params
-
eventName
string | symbol Name of event to listen for.(*
for all events) -
listenter
Function Function to call in response to given event -
options
undefined | Object Some options. optional-
once
boolean Only call once if it istrue
.
-
Returns
-
unsubscribe
Function Function to remove the listenter.
dispatch
Invoke all handlers for the given name.
Params
-
eventName
string | symbol Name of event to invoke for.
clear
Clears the specified listeners. It will clear all listeners if the parameter is undefined.
Params
-
eventName
string | symbol | undefiend Name of event to listen for.(undefined for all events)
setScope
If you call dispatch
, only the handlers for the given scope will be invoked.
Params
-
scope
string Name of scope.
getScope
Return current scope
.
resetScope
Reset the scope to be default
.