获取和异步数据之间的确切区别是什么。官方文档是这样说的:
异步数据
您可能想要获取数据并将其呈现在服务器端。 Nuxt.js 添加了一个 asyncData 方法,允许您在设置组件数据之前处理异步操作。
每次加载组件之前都会调用 asyncData (仅适用于页面组件)。它可以从服务器端调用,也可以在导航到相应的路由之前调用。该方法接收上下文对象作为第一个参数,您可以使用它来获取一些数据并返回组件数据。
拿来
fetch 方法用于在渲染页面之前填充存储,它类似于 asyncData 方法,只是它不设置组件数据。如果设置了 fetch 方法,则每次加载组件之前都会调用(仅适用于页面组件)。它可以从服务器端调用,也可以在导航到相应的路由之前调用。
fetch 方法接收上下文对象作为第一个参数,我们可以使用它来获取一些数据并填充存储。为了使 fetch 方法异步,返回一个 Promise,nuxt.js 将在渲染组件之前等待 promise 被解析。
Fetch 被用来用数据填充存储?但是在 asyncData 中,这也可以通过存储提交吗?我不明白为什么有两种方法。
这两种方法在初始加载时都在服务器端运行,之后当您浏览应用程序时它运行客户端。
有人可以解释一下使用这些方法的优势吗?
感谢帮助。
原文由 Yakalent 发布,翻译遵循 CC BY-SA 4.0 许可协议
让我重申几点作为我要说的借口
asyncData
可以设置组件级对象和访问vuex storefetch
无法设置组件级对象但可以访问 vuex 存储asyncData
&fetch
都将在初始加载期间在服务器端触发asyncData
和fetch
1)如果你的设计是
然后
use fetch
2)如果你的设计是
然后
use asyncData
我看不出使用
asyncData
或fetch
有任何缺点选择
asyncData
或fetch
完全取决于您的架构NuxtJS >= 2.12 的更新
使用较新的 NuxtJS 版本 (>= 2.12 ) 时,答案中提到的几点不再适用。官方 RFC 公告 在这里。
可以在 NuxtJS 官方博客的这篇 文章 中找到关于
asyncData
和新的fetch
之间的新行为和差异的很好解释。至于两者之间的选择,我相信原来的答案仍然适用: