Do you know that you can use v-model not only on native input elements (like <input>) but also on your custom input components?
If, for example, you have a custom component for selecting multiple values, you can use it like this:
<multi-value-input v-model="tags" />
Instead of this:
<multi-value-input :value="tags" @input="setTags" />
If you actually have such a component that accepts the value through :value prop and updates it through @input event, v-model will work out of the box!
So that’s the trick! Your component should use value prop and @input event to support v-model.
Finally, if you want to use a different prop/event name and still support v-model, you have to use the model option on your component, like this:
model: {
prop: 'checked', // instead of value
event: 'changed' // instead of input
}