- 配置参考 Configuration
- 入门指南
- 介绍 Introduction
- 安装 Installation
- 配置 Configuration
- 视图 Views
- 资产 Assets
- 路由 Routing
- SEO and Meta
- 过渡 Transitions
- 数据获取 Data Fetching
- 状态管理 State Management
- 错误处理 Error handling
- 层结构 Layers
- 部署 Deployment
- 测试 Testing
- 升级指南 Upgrade Guide
- 核心概念
- 自动导入 Auto imports
- Vue.Js Vue.js Development
- 渲染模式 Rendering Modes
- 服务端引擎 Server Engine
- 模块化 Modules
- ES模块 ES Modules
- TypeScript TypeScript
- 目录结构
- 可组合项
- 组件
- 工具库
- fetch
- abortNavigation
- addRouteMiddleware
- clearError
- clearNuxtData
- createError
- defineNuxtComponent
- defineNuxtRouteMiddleware
- definePageMeta
- navigateTo
- onBeforeRouteLeave
- onBeforeRouteUpdate
- onNuxtReady
- prefetchComponents
- preloadComponents
- preloadRouteComponents
- refreshNuxtData
- reloadNuxtApp
- setPageLayout
- setResponseStatus
- showError
- updateAppConfig
- CLI 命令
- 进阶
- 深入探究
- 迁移指南
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
useAsyncData
useAsyncData 提供对异步解析的数据的访问。
useAsyncData
在您的页面、组件和插件中,您可以使用 useAsyncData
来访问异步解析的数据。
useAsyncData
是一个可组合项,旨在在设置函数、插件或路由中间件中直接调用。 它返回反应式可组合项并处理向 Nuxt 有效负载添加响应,以便它们可以从服务器传递到客户端,而无需在页面水合时在客户端重新获取数据。
类型
Signaturefunction useAsyncData(
handler: (nuxtApp?: NuxtApp) => Promise<DataT>,
options?: AsyncDataOptions<DataT>
): AsyncData<DataT>
function useAsyncData(
key: string,
handler: (nuxtApp?: NuxtApp) => Promise<DataT>,
options?: AsyncDataOptions<DataT>
): Promise<AsyncData<DataT>>
type AsyncDataOptions<DataT> = {
server?: boolean
lazy?: boolean
default?: () => DataT | Ref<DataT> | null
transform?: (input: DataT) => DataT
pick?: string[]
watch?: WatchSource[]
immediate?: boolean
}
interface RefreshOptions {
dedupe?: boolean
}
type AsyncData<DataT, ErrorT> = {
data: Ref<DataT | null>
pending: Ref<boolean>
execute: () => Promise<void>
refresh: (opts?: RefreshOptions) => Promise<void>
error: Ref<ErrorT | null>
}
参数
- key:一个唯一的键,以确保可以跨请求正确地删除数据提取。 如果您不提供密钥,则会为您生成一个对
useAsyncData
实例的文件名和行号唯一的密钥。 - handler:一个返回值的异步函数
- options:
- lazy: 是否在加载路由后解析异步函数,而不是阻止客户端导航(默认为
false
) - default:在异步函数解析之前设置数据默认值的工厂函数——对
lazy: true
选项特别有用 - server: 是否在服务器上获取数据(默认为
true
) - transform:可用于在解析后更改“处理程序”函数结果的函数
- pick: 仅从
handler
函数结果中选择该数组中的指定键 - watch: 观看自动刷新的反应源
- immediate:当设置为
false
时,将阻止请求立即触发。 (默认为true
)
- lazy: 是否在加载路由后解析异步函数,而不是阻止客户端导航(默认为
在底层,lazy: false
使用 <Suspense>
在获取数据之前阻止路由的加载。 考虑使用 lazy: true
并实现加载状态来获得更快速的用户体验。
返回值
- data:传入的异步函数的结果。
- pending:一个布尔值,指示是否仍在获取数据。
- refresh/execute:可用于刷新
handler
函数返回的数据的函数。 - error:数据获取失败时的错误对象。
- status:指示数据请求状态的字符串(
"idle"
、"pending"
、"success"
、"error"
)。
默认情况下,Nuxt 会等到refresh
完成后才能再次执行。
如果您还没有在服务器上获取数据(例如,使用 server: false
),那么数据 不会 被获取,直到水合完成。 这意味着即使您在客户端等待 useAsyncData
,data
仍将在 <script setup>
中保持为 null
。
示例
tsconst { data, pending, error, refresh } = await useAsyncData(
'mountains',
() => $fetch('https://api.nuxtjs.dev/mountains')
)
观察参数变化
内置的 watch
选项允许在检测到任何更改时自动重新运行 fetcher 函数。
const page = ref(1)
const { data: posts } = await useAsyncData(
'posts',
() => $fetch('https://fakeApi.com/posts', {
params: {
page: page.value
}
}), {
watch: [page]
}
)
useAsyncData
是编译器转换后保留的函数名,所以你不应该命名你自己的函数 useAsyncData
。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论