【问题标题】:asyncdata function not rendering vuex data on sever sideasyncdata 函数不在服务器端呈现 vuex 数据
【发布时间】:2020-02-28 21:21:46
【问题描述】:

在 asyncData() 函数中从 vuex 存储中获取数据并检查页面源之后。数据未显示在页面源上。

<template>
<div>
  <p>{{title}}</p>
</div>
</template>

<script>
  export default {
    asyncData({params, store}) {
       return { title: store.state.category.title };
  }
</script>

页面源结果

&lt;p&gt;[]&lt;/p&gt;

预期的结果应该是

&lt;p&gt; My Category Title &lt;/p&gt;

我对 asyncData() 函数的理解有问题吗?

【问题讨论】:

  • 试试this.$store.state.category.titleimport {mapState} from 'vuex'
  • 根据 nuxt 文档,我们无法在 asyncdata 函数中访问“this”。

标签: javascript vuex nuxt.js vuex-modules


【解决方案1】:

经过一番研究。我开始知道使用nuxtServerInit()。我们可以直接从服务器填充存储。 If you are using a module pattern you can use it only in store\index.js file. 现在,如果我正在获取 vuex 存储数据,我可以在我的组件页面源中看到它。 最好的部分是,如果您刷新页面,然后 nuxtServerInit() 会自动运行并按照此处定义的逻辑填充存储。

【讨论】:

    【解决方案2】:

    我不明白您为什么使用asyncData() 从 vuex 存储中获取数据。只要您在您的网站上,存储在 vuex 存储中的数据就会被存储。离开或刷新站点后,它将再次加载初始值。

    àsyncData() 用于例如从数据库中获取数据并将其显示在您的网页上。

    这里的问题是,你访问商店错误:

    <template>
       <div>
          <p>{{$store.state.category.title}}</p>
       </div>
    </template>
    

    【讨论】:

    • 实际上我在主页上填充存储,而对于另一个页面,我正在从 vuex 存储中获取数据。我的问题是,我从 vuex 存储中获取的数据没有呈现服务器端。正如您在每个页面上提到的那样,一种解决方案是我应该使用 asyncdata 从服务器获取数据。但是有什么办法可以让vuex数据在服务端渲染。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 2019-04-04
    • 2010-12-14
    • 1970-01-01
    • 2019-01-26
    • 2019-07-22
    相关资源
    最近更新 更多