Nuxtjs asyncdata 在导航更改后不保留数据
Nuxtjs asyncdata doesn't keep data after navigation change
我在 pages/index.vue
并且为了在我的页面中显示新闻,我使用 asyncdata 方法,但是当我转到另一个页面并返回主页时,新闻数据是空的。我应该在商店保存数据吗?或者有其他解决方案吗?
<template>
<div>
{{news.length}}
<nuxt-link to="/about"> about </nuxt-link>
</div>
</template>
<script>
async asyncData({$axios}){
return $axios.post("/news")
.then(({data : {data : news}}) => {
return {news};
})
.catch(err => console.log(err));
}
</script>
是的,通常我们将它存储在 vuex 存储中。它可能看起来像这样:
async asyncData({$axios, store, error}){
try {
let news = (await $axios.post("/news")).data.data.news;
store.commit("SAVE_NEWS", news);
catch (err) {
error({ statusCode: 404, message: 'Cannot find })
}
},
computed: {
news() {
return this.$store.state.news
}
}
当你像这样在 nuxt.config 中使用 .env 时
env: {
appUrl: "localhost:2323"
}
并在 nuxt.config 上的 axios 配置中使用 env 参数,像这样
axios: {
baseUrl : process.env.appUrl
}
asyncData 不适用于导航更改,您必须直接硬编码设置 baseUrl。
我在 pages/index.vue
并且为了在我的页面中显示新闻,我使用 asyncdata 方法,但是当我转到另一个页面并返回主页时,新闻数据是空的。我应该在商店保存数据吗?或者有其他解决方案吗?
<template>
<div>
{{news.length}}
<nuxt-link to="/about"> about </nuxt-link>
</div>
</template>
<script>
async asyncData({$axios}){
return $axios.post("/news")
.then(({data : {data : news}}) => {
return {news};
})
.catch(err => console.log(err));
}
</script>
是的,通常我们将它存储在 vuex 存储中。它可能看起来像这样:
async asyncData({$axios, store, error}){
try {
let news = (await $axios.post("/news")).data.data.news;
store.commit("SAVE_NEWS", news);
catch (err) {
error({ statusCode: 404, message: 'Cannot find })
}
},
computed: {
news() {
return this.$store.state.news
}
}
当你像这样在 nuxt.config 中使用 .env 时
env: {
appUrl: "localhost:2323"
}
并在 nuxt.config 上的 axios 配置中使用 env 参数,像这样
axios: {
baseUrl : process.env.appUrl
}
asyncData 不适用于导航更改,您必须直接硬编码设置 baseUrl。