The CRUD interface that we created works like a router application, with three routes, the index or list, the view, and the edit route. Each route has its own screen and components, with separated logic functions.
We created an abstract UserForm component that was used on the View and Update components. This abstract component can be used in many other components, as it does not require any base logic to work; it's like an input but made of several inputs.
Using the provide/inject API of Vue, we were able to pass the userId to each of the components in an observable way, which means that when the variable is updated, the component receives the updated variable. This is not achievable using the normal Vue API, so we had to use the Object.defineProperty and use the provide property as a factory function to return the final object.