Nuxtjs asyncdata 在导航更改后不保留数据

Posted

技术标签:

【中文标题】Nuxtjs asyncdata 在导航更改后不保留数据【英文标题】:Nuxtjs asyncdata doesn't keep data after navigation change 【发布时间】:2020-11-25 08:29:08 【问题描述】:

我在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>

【问题讨论】:

【参考方案1】:

是的,通常我们将其存储在 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
      
   

【讨论】:

这对SEO没有负面影响吗? @MortezaNegahi asyncData 也有 error 属性。不,它对 SEO 没有负面影响。【参考方案2】:

当你像这样在 nuxt.config 中使用 .env 时

env: 
    appUrl: "localhost:2323"

并像这样在 nuxt.config 上的 axios 配置中使用 env 参数

axios: 
    baseUrl : process.env.appUrl

asyncData 对导航变化不起作用,必须直接硬编码设置 baseUrl。

【讨论】:

以上是关于Nuxtjs asyncdata 在导航更改后不保留数据的主要内容,如果未能解决你的问题,请参考以下文章

来自组件的 NuxtJS asyncData

Nuxtjs 在 asyncData 中获取 Firestore 数据

如何在 NuxtJS 的 asyncData 中使用 Promise

javascript nuxtjs asyncData解构覆盖

javascript nuxtjs asyncData用法

text nuxtjs async asyncData中调用api报错文件未定义