A real SPA with Vue is something in and of itself and I wouldn't plan on using any py4web rendering tools. py4web is just your backend server in that instance. Well, maybe on the main page/frame I'd use py4web rendering tools, but that is it.
Other than that, py4web should just be returning json to the SPA.
When you say 'component', are you talking about a py4web 'loaded' component or a Vue component?
If you're still trying to use py4web-rendered html, maybe something like htmx would do the trick. htmx returns rendered html to the page fetch vs Vue wanting json.
-Jim