一个基于事件总线的全局状态管理工具.
如何使用?
1、npm 安装依赖
npm install sute-store
2、事件总线(EventBus)
const { EventBus } = require("sute-store");
const eventBus = new EventBus();
const foo = (...args) => {
console.log("执行了该函数", ...args);
};
eventBus.on("test", foo);
eventBus.emit("test", 1, 2, 3);
setTimeout(() => {
eventBus.on("test", foo);
eventBus.off("test", foo);
eventBus.emit("test", 1, 2, 3);
}, 2000);
eventBus.once(true, foo);
eventBus.emit("test", 1, 2, 3);
3、数据共享(EventStore)
const { EventStore } = require("sute-store");
const eventStores = new EventStore({
state: {
name: "cxw",
age: 25,
habby: () => {
console.log("123");
},
},
actions: {
setNameFn: (ctx) => {
setTimeout(() => {
ctx.name = "demo";
}, 2000);
},
},
});
const foo = (value) => {
console.log("value", value);
};
eventStores.onState("name", foo);
eventStores.setState("name", 123);
eventStores.onStates(["name", "age"], foo);
eventStores.setState("name", "123");
eventStores.setState("age", "321");
eventStores.onState("name", foo);
eventStores.offState("name", foo);
eventStores.setState("name", "321");
eventStores.onStates(["name", "age"], foo);
eventStores.offState(["name", "age"], foo);
eventStores.setState("name", "123");
eventStores.setState("age", "321");
eventStores.onState("name", foo);
eventStores.disPatch("setNameFn");
eventStores.disPatch("setNameFn");
参考来源: https://github.com/coderwhy/hy-event-store,