It provides the v-model directive that makes two-way binding between form inputs"a breeze".
Depending on what you are building, you might need to build custom components that deal with two-way data binding. Here are some ways of implementing your own custom v-model:. Obs.: The goal here is not to benchmark neither discuss which of the implementations is the best but to introduce the different approaches that can be used to implement v-model in your custom components.
This is probably the most used way of implementing v-model in your custom components. You create a prop named value using the type you need, then create a local observable variable in data() and initialize it with the value of the prop you've created previously and watch its changes in order to emit an input event to the parent component to update the value prop from the outside**.