NuxtJS项目——异步数据
Nuxt.js 扩展了 Vue.js,增加了一个叫 asyncData
的方法,使得我们可以在设置组件的数据之前能异步获取或处理数据。asyncData
方法会在组件(限于页面组件)每次加载之前被调用。它可以在服务端或路由更新之前被调用。 在这个方法被调用的时候,第一个参数被设定为当前页面的上下文对象,我们可以利用 asyncData
方法来获取数据,Nuxt.js 会将 asyncData
返回的数据融合组件 data
方法返回的数据一并返回给当前组件。
(1)asyncData
的实现方式
使用 asyncData
方法的方式有下面几种,可以根据自己的喜好来选择:
- 返回Promise
返回一个 Promise
, nuxt.js会等待该Promise
被解析之后才会设置组件的数据,从而渲染组件。
- 使用async或await
- 使用回调函数
(2)asyncData还可以访问动态路由的数据,我们可以使用注入
asyncData属性的context
对象来访问动态路由数据。
(3)query参数的监听
默认情况下,query的改变不会调用asyncData
方法。如果要监听这个行为,例如,在构建分页组件时,您可以设置应通过页面组件的watchQuery
属性监听参数。
(4)错误提示
Nuxt.js 在上下文对象context
中提供了一个 error(params)
方法,你可以通过调用该方法来显示错误信息页面。params.statusCode
可用于指定服务端返回的请求状态码。
如果我们使用了回调函数
的方式, 可以将错误的信息对象直接传给该回调函数, Nuxt.js 内部会自动调用 error
方法。
阅读是一种修养,分享是一种美德。