You may not have known this, but you can easily watch nested values directly, just by using quotes:
watch: { '$route.query.id'() { // ... } }
This is really useful for working with deeply nested objects!