What is the best practice for passing returned data / parameters, so that when they are changed by child components, do I have access to the new values?
The flow of props one way down, the child should never change their details directly.
For a complex application, vuex is a solution, but for a simple case, vuex is redundant. Like what @Belmin said, you can even use a simple JavaScript object for this, thanks to the reactivity system.
Another solution is to use events. Vue has already implemented the EventEmitter interface, a child can use this.$emit('eventName', data) to communicate with its parent.
The parent will listen for the event as follows: ( @update is shorthand for v-on:update )
<child :value="value" @update="onChildUpdate" />
and update the data in the event handler:
methods: { onChildUpdate (newValue) { this.value = newValue } }
Here is a simple example of custom events in Vue:
http://codepen.io/CodinCat/pen/ZBELjm?editors=1010
This is only the relationship between parents and children, if the component needs to talk with its siblings, then you need a global event bus, in Vue.js you can just use an empty instance of Vue:
const bus = new Vue() // In component A bus.$on('somethingUpdated', data => { ... }) // In component B bus.$emit('somethingUpdated', newData)