vue-Mqtt Plugin topic as dynamic function

I’ve been using the Vue-Mqtt plugin from nik-zp https://github.com/nik-zp/Vue-Mqtt and https://github.com/nik-zp/Vue-Mqtt-Example for some time

It is a bit annoying that I e.g. with a switch, the topic cannot be passed dynamically, so that the switch only registers itself with the broker for this token.

I would like to pass that to the component with a property.

<ToggleButton id="event_handle" publishTopic="VueMqtt/led" labelEnableText="LED IST AN" labelDisableText="LED IST AUS" />

to ensure that the component only registers this topic, I have to integrate it into the components.
or with a wildcard “+/+” and then query, but with 50 sitches that increases the traffic senseless.

there is a possibility to build the plugin differently or to define the function dynamically.

<script>
export default {
    props: {
        disabled: {
            type: Boolean,
            default: false
        },
        labelEnableText: {
            type: String,
            default: 'On'
        },
        labelDisableText: {
            type: String,
            default: 'Off'
        },
        id: {
            type: String,
            default: 'primary'
        }, 
        defaultState: {
            type: Boolean,
            default: false
        },
        publishTopic: {
            type: String,
            default: "VueMqtt/xxx"
        },
        off: {
            type: String,
            default: "0"
        },
        on: {
            type: String,
            default: "1"
        }
    },

    data() {
        return {
            currentState: this.defaultState
        }
    },

    watch: {
        defaultState: function defaultState() {
            this.currentState = Boolean(this.defaultState)
        }
    },

    methods: {
        publish () {
            console.log("this.currentState", this.currentState);
            if (this.currentState == false){
                this.$mqtt.publish(this.publishTopic, this.off);
            } else {
                this.$mqtt.publish(this.publishTopic, this.on);
            }
        }
    },

    mqtt: {
        /** 'VueMqtt/publish1' or '+/publish1' */
        'VueMqtt/led' (data, topic) {
            if (topic === this.publishTopic) {
                console.log('topic:', 'VueMqtt/XXXXXXXX')
                if (data == "0"){
                   this.currentState = false
                } else   if (data == "1"){    
                    this.currentState = true;
                }
            }

        },
        '+/+' (data, topic) {  //wildcard????
            if (topic === this.publishTopic) {           
                if (data == "0"){                   
                    this.currentState = false
                } else   if (data == "1"){                   
                    this.currentState = true;
                }
            }
        }
    },

    computed: {
        // currentState() {
        //     return this.defaultState;
        // },

        isActive() {
            return this.currentState;
        },

        enableText() {
            return this.labelEnableText;
        },

        disabledText() {
            return this.labelDisableText;
        },

        checkedValue: {
            get() {
                console.log("checkedValue get");
                this.publish();
                return this.currentState;
            },

            set(newValue) {
                console.log("checkedValue get");
                // this.publish();
                this.currentState = newValue;
                this.$emit('change', newValue);
            }
        }
    }
}
</script>