Nuxtjs 组件中的 asyncData 不工作
asyncData in component of Nuxtjs isn't working
我对 nuxt.js 项目有疑问。我使用了异步组件,但是当它渲染时,异步不起作用。这是我的代码。
我在 https://nuxtjs.org/api/ 中查看了文档,但我不知道我的问题到底是什么
Test.vue(组件)
<template>
<div>
{{ project }}
</div>
</template>
<script>
export default {
data() {
return {
project : 'aaaa'
}
},
asyncData() {
return {
project : 'bbbb'
}
}
}
</script>
这是index.vue(页)
<template>
<test></test>
</template>
<script>
import Test from '~/components/Test.vue'
export default {
components : {
Test
}
}
</script>
我的预期结果是
bbbb
但是当 运行 在 http://localhost:3000 上时,这是实际结果
aaaa
我尝试搜索 google 很多次,但没有找到适合我的预期解决方案。请有人帮助我。
感谢您的帮助。
components/
文件夹必须仅包含 "pure" 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>
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>
您不能在组件中使用 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>
我对 nuxt.js 项目有疑问。我使用了异步组件,但是当它渲染时,异步不起作用。这是我的代码。
我在 https://nuxtjs.org/api/ 中查看了文档,但我不知道我的问题到底是什么
Test.vue(组件)
<template>
<div>
{{ project }}
</div>
</template>
<script>
export default {
data() {
return {
project : 'aaaa'
}
},
asyncData() {
return {
project : 'bbbb'
}
}
}
</script>
这是index.vue(页)
<template>
<test></test>
</template>
<script>
import Test from '~/components/Test.vue'
export default {
components : {
Test
}
}
</script>
我的预期结果是
bbbb
但是当 运行 在 http://localhost:3000 上时,这是实际结果
aaaa
我尝试搜索 google 很多次,但没有找到适合我的预期解决方案。请有人帮助我。
感谢您的帮助。
components/
文件夹必须仅包含 "pure" 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>
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>
您不能在组件中使用 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>