我有一个nuxt.js项目的问题.我使用异步组件,但当它rending时,async无法正常工作.这是我的代码.
我在https://nuxtjs.org/api/查看了文档,但我不知道究竟是什么问题
Test.vue(组件)
<template>
<div>
{{ project }}
</div>
</template>
<script>
export default {
data() {
return {
project : 'aaaa'
}
},
asyncData() {
return {
project : 'bbbb'
}
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
这是index.vue(页面)
<template>
<test></test>
</template>
<script>
import Test from '~/components/Test.vue'
export default {
components : {
Test
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
我的预期结果是
bbbb
但是当在http:// localhost:3000上运行时,这是实际结果
aaaa
我尝试多次搜索谷歌,但没有预期的解决方案.请帮助我的人.
谢谢你的帮助.
该components/
文件夹必须仅包含"纯"Vue.js组件
所以你不能asyncData
在里面使用.
阅读此常见问题解答:https://nuxtjs.org/faq/async-data-components#async-data-in-components-
components/Test.vue(组件)
<template>
<div>
{{ project }}
</div>
</template>
<script>
export default {
props: ['project'] // to receive data from page/index.vue
}
</script>
Run Code Online (Sandbox Code Playgroud)
pages/index.vue(页)
<template>
<test :project="project"></test>
</template>
<script>
import Test from '~/components/Test.vue'
export default {
components : {
Test
},
asyncData() {
return {
project : 'bbbb'
}
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
小智 8
您不能在组件中使用 asyncData。
您可以选择使用fetch方法。
<template>
<div>
<p v-if="$fetchState.pending">Loading....</p>
<p v-else-if="$fetchState.error">Error while fetching mountains</p>
<ul v-else>
<li v-for="(mountain, index) in mountains" :key="index">
{{ mountain.title }}
</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
mountains: []
}
},
async fetch() {
this.mountains = await fetch(
'https://api.nuxtjs.dev/mountains'
).then(res => res.json())
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3229 次 |
最近记录: |