Nuxt 如何发送异步道具
Nuxt How to send async props
我在使用 Nuxt2.15 (Vue.js) 时遇到了问题。
我想将 parent 组件的数据发送到 parent 组件获取的 child 组件。而且,我想通过使用 parent 组件中的数据从 child 组件中获取另一个数据。但是 props 数据在 child 组件中未定义。我尝试在 child 组件中使用“watch”和“computed”。但我无法让它发挥作用。如果有人能告诉我如何修复它,我将不胜感激。
Parent
<template>
<div>
<Child v-bind:exampleData="exampleData" />
</div>
</template>
<script>
import Child from "./Child.vue";
export default {
name: "Parent",
components: {
Child,
},
data() {
return {
exampleData: [],
};
},
async created() {
const exampleData = await fetchData();
this.exampleData = exampleData
},
};
</script>
Child
<template>
<div><!-- show result data here --></div>
</template>
<script>
export default {
name: "Child",
props: ["exampleData"],
async created() {
let abc = this.exampleData;
// abc is undefined
const resultData = await fetData(abc);
this.result = resultData;
},
data() {
return {
result: [],
};
},
};
尝试使用 mounted()
方法而不是像这样的 created()
:
<template>
<div><!-- show result data here --></div>
</template>
<script>
export default {
name: "Child",
props: ["exampleData"],
async mounted() {
let abc = this.exampleData;
// abc is undefined
const resultData = await fetData(abc);
this.result = resultData;
},
data() {
return {
result: [],
};
},
};
但是,如果从父级传递的数据是异步的或者在某个时刻可能会被更改,我建议像这样使用 watch 属性:
<template>
<div><!-- show result data here --></div>
</template>
<script>
export default {
name: "Child",
props: ["exampleData"],
data() {
return {
result: [],
};
},
watch: {
exampleData() {
const resultData = await fetData(this.exampleData);
this.result = resultData;
}
}
};
我在使用 Nuxt2.15 (Vue.js) 时遇到了问题。 我想将 parent 组件的数据发送到 parent 组件获取的 child 组件。而且,我想通过使用 parent 组件中的数据从 child 组件中获取另一个数据。但是 props 数据在 child 组件中未定义。我尝试在 child 组件中使用“watch”和“computed”。但我无法让它发挥作用。如果有人能告诉我如何修复它,我将不胜感激。
Parent
<template>
<div>
<Child v-bind:exampleData="exampleData" />
</div>
</template>
<script>
import Child from "./Child.vue";
export default {
name: "Parent",
components: {
Child,
},
data() {
return {
exampleData: [],
};
},
async created() {
const exampleData = await fetchData();
this.exampleData = exampleData
},
};
</script>
Child
<template>
<div><!-- show result data here --></div>
</template>
<script>
export default {
name: "Child",
props: ["exampleData"],
async created() {
let abc = this.exampleData;
// abc is undefined
const resultData = await fetData(abc);
this.result = resultData;
},
data() {
return {
result: [],
};
},
};
尝试使用 mounted()
方法而不是像这样的 created()
:
<template>
<div><!-- show result data here --></div>
</template>
<script>
export default {
name: "Child",
props: ["exampleData"],
async mounted() {
let abc = this.exampleData;
// abc is undefined
const resultData = await fetData(abc);
this.result = resultData;
},
data() {
return {
result: [],
};
},
};
但是,如果从父级传递的数据是异步的或者在某个时刻可能会被更改,我建议像这样使用 watch 属性:
<template>
<div><!-- show result data here --></div>
</template>
<script>
export default {
name: "Child",
props: ["exampleData"],
data() {
return {
result: [],
};
},
watch: {
exampleData() {
const resultData = await fetData(this.exampleData);
this.result = resultData;
}
}
};