A Pubsub Plugin (or better Event Bus) for Vue, inspired in mitt
npm i vue-pubsub
import { createApp } from "vue";
import { PubsubPlugin } from "vue-pubsub";
import App from "./App.vue";
const app = createApp(App);
app.use(PubsubPlugin());
app.mount("#app");
// ...
<script setup>
import { usePubsub } from "vue-pubsub";
const pubsub = usePubsub();
pubsub.on("test", (data) => {
console.log(data);
});
</script>
// in other .vue file / setup hook
pubsub.to("test", "Hello World!");
You can declare custom channel types by:
declare module "vue-pubsub" {
interface Channels {
test: string;
}
}
Vue inject() and provide() do not support generic types in same context. Better suggestions for this are welcome.