Nuxt.js调用asyncData

时间:2022-08-09 19:46:43
<template>
<div>
Index {{ username }}
</div>
</template> <script>
export default {
name: "Index",
async asyncData () {
const asyncData = {};
await new Promise((resolve, reject) => {
setTimeout(() => {
asyncData.username = 'John Smith';
resolve();
}, 2000)
});
return asyncData;
}
};
</script>

使用

直接在页面上使用下面的代码就行了

{{ username }}

多个请求

async asyncData () {
// 正确
let [pageRes, countRes] = await Promise.all([
axios.get('/api/users'),
axios.get('/api/users')
]) return {
users: pageRes,
msg: countRes
}
},
created () {
console.log(this.users)
console.log(this.msg)
}
}

高级用法

<template>
<div>
<p>postListArray=>{{ postListArray }}</p>
<p>siteConfigObj=>{{ siteConfigObj }}</p>
</div>
</template> <script>
export default {
name: "Index",
async asyncData({ $axios }) {
const siteConfigResult = await $axios.$post(
"http://www.terwergreen.com/api/site/config/list"
);
const postsResult = await $axios.$post(
"http://www.terwergreen.com/api/blog/post/list"
);
const siteConfigObj =
siteConfigResult.status === 1 ? siteConfigResult.data : {};
const postListArray = postsResult.status === 1 ? postsResult.data.list : []; return { siteConfigObj, postListArray };
},
head() {
return {
title: this.siteConfigObj.webname + " - " + this.siteConfigObj.webslogen,
meta: [
{
name: "keywords",
content: this.siteConfigObj.keywords
},
{
hid: "description",
name: "description",
content: this.siteConfigObj.description
}
]
};
}
};
</script>