Vega is great for data visualizations, so you don't have to write everything in D3 by yourself. But when the rest of your app is not in Vega, it is not straightforward to integrate.
Here an example how it's possible to have a Vega
Vue component. It takes a Vega-lite spec as property, plus some data. It then compiles the spec to Vega and uses the View API from Vega to render it. Interaction with the rest of the application (Vue -> Vega) is done via Vega Signals. The convention here is that every signal provided as property must be a Vuex getter. The other way around (Vega -> Vue) can be done in a similar fashion, I suppose.