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
方法。