One solution that passes data to a child component as props and gets another async data with the props.
parent component
<template>
<Selector :user-id="userId"/>
</template>
<script>
import Vue from "vue";
import Selector from "~/components/Selector.vue";
export default Vue.extend({
components: { Selector },
data() {
return {
userId: undefined
};
},
async fetch() {
this.userId = await this.$asios.$get("http://example.com");
}
});
</script>
The parent component passes userId
as props.
child component
<template>
<p v-if="user">{{ user.name }}</p>
</template>
<script>
import Vue from "vue";
export default Vue.extend({
props: {
userId: {
type: String,
required: true
}
},
data() {
return {
user: undefined
};
},
watch: {
userId() {
this.getUser();
}
},
methods: {
async getUser() {
if (!this.userId) {
return;
}
this.user = await this.$asios.$get("http://example.com/get_user");
}
}
});
</script>
After the child component get a userId
with watch()
, it requests an async user data.
Top comments (0)