[{"data":1,"prerenderedAt":4443},["ShallowReactive",2],{"docs-all-flat":3,"docs-\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-async-data":1018},[4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192,196,200,204,208,212,216,220,224,228,232,236,240,244,248,252,256,260,264,268,272,276,280,284,288,292,296,300,304,308,312,316,320,324,328,332,336,340,344,348,352,355,359,363,367,371,375,379,383,387,391,395,399,403,407,411,415,419,423,427,431,435,439,443,447,451,455,459,463,467,471,475,479,483,487,491,495,499,503,507,511,515,519,523,527,531,535,539,543,547,551,555,559,563,567,571,575,579,583,587,591,595,599,603,607,611,615,619,623,627,631,635,639,643,647,651,655,659,663,667,671,675,679,683,687,691,695,699,703,707,711,715,719,723,727,731,735,739,743,747,751,755,759,763,767,770,774,778,782,786,790,794,798,802,806,809,813,817,821,825,829,833,837,841,845,849,852,855,859,863,867,871,874,877,881,884,888,892,895,898,901,904,907,911,915,918,922,926,930,934,938,942,946,950,954,958,962,966,970,974,978,982,986,990,994,998,1002,1006,1010,1014],{"path":5,"title":6,"description":7},"\u002Fdocs\u002Fgetting-started\u002Fintroduction","介绍","Nuxt 的目标是提供直观且高性能的 Web 开发体验，并始终将优秀的开发者体验（Developer Experience）放在心上。",{"path":9,"title":10,"description":11},"\u002Fdocs\u002Fgetting-started\u002Finstallation","安装","通过在线 starter 快速上手 Nuxt，或在本地使用终端从零开始。",{"path":13,"title":14,"description":15},"\u002Fdocs\u002Fgetting-started\u002Fconfiguration","配置","Nuxt 提供了合理的默认配置，让你高效开发。",{"path":17,"title":18,"description":19},"\u002Fdocs\u002Fgetting-started\u002Fviews","视图","Nuxt 提供了多个组件层来实现应用的用户界面。",{"path":21,"title":22,"description":23},"\u002Fdocs\u002Fgetting-started\u002Fassets","资源","Nuxt 为你的资源提供了两种处理方式。",{"path":25,"title":26,"description":27},"\u002Fdocs\u002Fgetting-started\u002Fstyling","样式","了解如何为你的 Nuxt 应用添加样式。",{"path":29,"title":30,"description":31},"\u002Fdocs\u002Fgetting-started\u002Frouting","路由","Nuxt 的文件系统路由会为 pages\u002F 目录中的每个文件创建一条路由。",{"path":33,"title":34,"description":35},"\u002Fdocs\u002Fgetting-started\u002Fseo-meta","SEO 与 Meta","借助强大的 head 配置、composables 和组件，改善你的 Nuxt 应用的 SEO。",{"path":37,"title":38,"description":39},"\u002Fdocs\u002Fgetting-started\u002Ftransitions","过渡","使用 Vue 或浏览器原生的 View Transitions，在页面和布局之间应用过渡效果。",{"path":41,"title":42,"description":43},"\u002Fdocs\u002Fgetting-started\u002Fdata-fetching","数据获取","Nuxt 提供了用于处理应用内数据获取的 composables。",{"path":45,"title":46,"description":47},"\u002Fdocs\u002Fgetting-started\u002Fstate-management","状态管理","Nuxt 提供了强大的状态管理库和 useState composable，用于创建响应式且对 SSR 友好的共享状态。",{"path":49,"title":50,"description":51},"\u002Fdocs\u002Fgetting-started\u002Ferror-handling","错误处理","了解如何在 Nuxt 中捕获和处理错误。",{"path":53,"title":54,"description":55},"\u002Fdocs\u002Fgetting-started\u002Fserver","Server","利用 Nuxt 的服务端框架构建全栈应用。你可以从数据库或其他服务端获取数据、创建 API，甚至生成像站点地图或 RSS 这样的静态服务端内容——全部来自同一个代码库。",{"path":57,"title":58,"description":59},"\u002Fdocs\u002Fgetting-started\u002Flayers","Layers","Nuxt 提供了一套强大的系统，允许你扩展默认文件、配置以及更多内容。",{"path":61,"title":62,"description":63},"\u002Fdocs\u002Fgetting-started\u002Fprerendering","Prerendering","Nuxt 允许在构建时静态渲染某些页面，以改善特定的性能或 SEO 指标。",{"path":65,"title":66,"description":67},"\u002Fdocs\u002Fgetting-started\u002Fdeployment","Deployment","了解如何将你的 Nuxt 应用部署到任何托管提供商。",{"path":69,"title":70,"description":71},"\u002Fdocs\u002Fgetting-started\u002Ftesting","Testing","如何测试你的 Nuxt 应用。",{"path":73,"title":74,"description":75},"\u002Fdocs\u002Fgetting-started\u002Fupgrade","Upgrade Guide","了解如何升级到最新的 Nuxt 版本。",{"path":77,"title":78,"description":79},"\u002Fdocs\u002Fdirectory-structure\u002Fnuxt",".nuxt","Nuxt 在开发阶段使用 .nuxt\u002F 目录来生成你的 Vue 应用。",{"path":81,"title":82,"description":83},"\u002Fdocs\u002Fdirectory-structure\u002Foutput",".output","Nuxt 在为生产环境构建应用时创建 .output\u002F 目录。",{"path":85,"title":86,"description":87},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Fassets","assets","assets\u002F 目录用于添加所有将由构建工具处理的网站资源。",{"path":89,"title":90,"description":91},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Fcomponents","components","components\u002F 目录用于存放你所有的 Vue 组件。",{"path":93,"title":94,"description":95},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Fcomposables","composables","使用 composables\u002F 目录将你的 Vue 组合式函数自动导入到应用中。",{"path":97,"title":98,"description":99},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Flayouts","layouts","Nuxt 提供了一个布局框架，用于将通用的 UI 模式提取为可复用的布局。",{"path":101,"title":102,"description":103},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Fmiddleware","middleware","Nuxt 提供中间件，用于在导航到特定路由前运行代码。",{"path":105,"title":106,"description":107},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Fpages","pages","Nuxt 提供基于文件的路由，用于在 Web 应用中创建路由。",{"path":109,"title":110,"description":111},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Fplugins","plugins","Nuxt 拥有一个插件系统，用于在创建 Vue 应用时使用 Vue 插件等。",{"path":113,"title":114,"description":115},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Futils","utils","使用 utils\u002F 目录在你的应用中自动导入工具函数。",{"path":117,"title":118,"description":119},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Fapp","app.vue","app.vue 文件是你 Nuxt 应用的主组件。",{"path":121,"title":122,"description":123},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Fapp-config","app.config.ts","使用 App Config 文件在应用内部暴露响应式配置。",{"path":125,"title":126,"description":127},"\u002Fdocs\u002Fdirectory-structure\u002Fapp\u002Ferror","error.vue","error.vue 文件是你 Nuxt 应用中的错误页面。",{"path":129,"title":130,"description":131},"\u002Fdocs\u002Fdirectory-structure\u002Fcontent","content","使用 content\u002F 目录为你的应用创建一个基于文件的 CMS。",{"path":133,"title":134,"description":135},"\u002Fdocs\u002Fdirectory-structure\u002Flayers","layers","使用 layers\u002F 目录在你的应用中组织和自动注册本地 layers。",{"path":137,"title":138,"description":139},"\u002Fdocs\u002Fdirectory-structure\u002Fmodules","modules","使用 modules\u002F 目录在你的应用中自动注册本地模块。",{"path":141,"title":142,"description":143},"\u002Fdocs\u002Fdirectory-structure\u002Fnode_modules","node_modules","包管理器将项目的依赖存储在 node_modules\u002F 目录中。",{"path":145,"title":146,"description":147},"\u002Fdocs\u002Fdirectory-structure\u002Fpublic","public","public\u002F 目录用于提供网站的静态资源。",{"path":149,"title":150,"description":151},"\u002Fdocs\u002Fdirectory-structure\u002Fserver","server","server\u002F 目录用于为你的应用注册 API 和服务端处理器。",{"path":153,"title":154,"description":155},"\u002Fdocs\u002Fdirectory-structure\u002Fshared","shared","使用 shared\u002F 目录在 Vue 应用和 Nitro 服务端之间共享功能。",{"path":157,"title":158,"description":159},"\u002Fdocs\u002Fdirectory-structure\u002Fenv",".env",".env 文件用于指定构建\u002F开发时的环境变量。",{"path":161,"title":162,"description":163},"\u002Fdocs\u002Fdirectory-structure\u002Fgitignore",".gitignore",".gitignore 文件用于指定 git 应当忽略的、有意不跟踪的文件。",{"path":165,"title":166,"description":167},"\u002Fdocs\u002Fdirectory-structure\u002Fnuxtignore",".nuxtignore",".nuxtignore 文件用于让 Nuxt 在构建阶段忽略项目根目录中的文件。",{"path":169,"title":170,"description":171},"\u002Fdocs\u002Fdirectory-structure\u002Fnuxtrc",".nuxtrc",".nuxtrc 文件允许你用扁平语法定义 Nuxt 配置。",{"path":173,"title":174,"description":175},"\u002Fdocs\u002Fdirectory-structure\u002Fnuxt-config","nuxt.config.ts","只需要一个 nuxt.config 文件，即可轻松配置 Nuxt。",{"path":177,"title":178,"description":179},"\u002Fdocs\u002Fdirectory-structure\u002Fpackage","package.json","package.json 文件包含你应用的所有依赖和脚本。",{"path":181,"title":182,"description":183},"\u002Fdocs\u002Fdirectory-structure\u002Ftsconfig","tsconfig.json","了解 Nuxt 如何在项目的不同部分管理 TypeScript 配置。",{"path":185,"title":186,"description":187},"\u002Fdocs\u002Fdirectory-structure","Nuxt 目录结构","了解 Nuxt 应用的目录结构以及如何使用它。",{"path":189,"title":190,"description":191},"\u002Fdocs\u002Fguide","Nuxt 指南","通过深入的指南了解 Nuxt 的工作原理。",{"path":193,"title":194,"description":195},"\u002Fdocs\u002Fguide\u002Fconcepts\u002Frendering","渲染模式","了解 Nuxt 中可用的不同渲染模式。",{"path":197,"title":198,"description":199},"\u002Fdocs\u002Fguide\u002Fconcepts\u002Fvuejs-development","Vue.js 开发","Nuxt 使用 Vue.js，并添加了组件自动导入、基于文件的路由以及支持 SSR 的组合式函数等特性。",{"path":201,"title":202,"description":203},"\u002Fdocs\u002Fguide\u002Fconcepts\u002Fnuxt-lifecycle","Nuxt 生命周期","理解 Nuxt 应用的生命周期，可以帮助你更深入地了解框架是如何运作的，尤其是在服务端渲染和客户端渲染两方面。",{"path":205,"title":206,"description":207},"\u002Fdocs\u002Fguide\u002Fconcepts\u002Fauto-imports","自动导入","Nuxt 会自动导入组件、组合式函数、辅助函数和 Vue API。",{"path":209,"title":210,"description":211},"\u002Fdocs\u002Fguide\u002Fconcepts\u002Fserver-engine","服务端引擎","Nuxt 由一个全新的服务端引擎驱动：Nitro。",{"path":213,"title":214,"description":215},"\u002Fdocs\u002Fguide\u002Fconcepts\u002Fmodules","模块","Nuxt 提供了一个模块系统来扩展框架核心并简化集成。",{"path":217,"title":218,"description":219},"\u002Fdocs\u002Fguide\u002Fconcepts\u002Fesm","ES 模块","Nuxt 使用原生的 ES 模块。",{"path":221,"title":222,"description":223},"\u002Fdocs\u002Fguide\u002Fconcepts\u002Ftypescript","TypeScript","Nuxt 完全类型化，并提供了有用的快捷方式，确保你在编码时能获取准确的类型信息。",{"path":225,"title":226,"description":227},"\u002Fdocs\u002Fguide\u002Fconcepts\u002Fcode-style","代码风格","Nuxt 开箱即用地支持 ESLint",{"path":229,"title":230,"description":231},"\u002Fdocs\u002Fguide\u002Fbest-practices\u002Fdevcontainers","Dev Containers","在开发容器中设置或打开 Nuxt 项目，以获得一致开发环境。",{"path":233,"title":234,"description":235},"\u002Fdocs\u002Fguide\u002Fbest-practices\u002Fhydration","Nuxt and Hydration","为什么修复水合问题很重要",{"path":237,"title":238,"description":239},"\u002Fdocs\u002Fguide\u002Fbest-practices\u002Fperformance","Nuxt performance","提升 Nuxt 应用性能的最佳实践。",{"path":241,"title":242,"description":243},"\u002Fdocs\u002Fguide\u002Fbest-practices\u002Fplugins","Nuxt Plugins","使用 Nuxt 插件时的最佳实践。",{"path":245,"title":246,"description":247},"\u002Fdocs\u002Fguide\u002Fai\u002Fmcp","Nuxt MCP Server","借助 Model Context Protocol 支持，在你的 AI 助手中使用 Nuxt 文档。",{"path":249,"title":250,"description":251},"\u002Fdocs\u002Fguide\u002Fai\u002Fllms-txt","Nuxt LLMs.txt","如何让 Cursor、Windsurf、GitHub Copilot、ChatGPT 和 Claude 等 AI 工具理解 Nuxt 的概念、API 和最佳实践。",{"path":253,"title":254,"description":255},"\u002Fdocs\u002Fguide\u002Fmodules\u002Fgetting-started","创建你的第一个模块","学习如何使用官方启动模板创建你的第一个 Nuxt 模块。",{"path":257,"title":258,"description":259},"\u002Fdocs\u002Fguide\u002Fmodules\u002Fmodule-anatomy","理解模块结构","学习 Nuxt 模块是如何构成的，以及如何定义它们。",{"path":261,"title":262,"description":263},"\u002Fdocs\u002Fguide\u002Fmodules\u002Frecipes-basics","添加插件、组件等","学习如何从你的模块注入插件、组件、组合式函数和服务端路由。",{"path":265,"title":266,"description":267},"\u002Fdocs\u002Fguide\u002Fmodules\u002Fmodule-dependencies","模块依赖","声明对其它模块的依赖，并带有版本约束和配置合并。",{"path":269,"title":270,"description":271},"\u002Fdocs\u002Fguide\u002Fmodules\u002Frecipes-advanced","使用钩子与扩展类型","在你的模块中掌握生命周期钩子、虚拟文件和 TypeScript 声明。",{"path":273,"title":274,"description":275},"\u002Fdocs\u002Fguide\u002Fmodules\u002Ftesting","测试你的模块","学习如何对你的 Nuxt 模块进行单元、集成和 E2E 测试。",{"path":277,"title":278,"description":279},"\u002Fdocs\u002Fguide\u002Fmodules\u002Fbest-practices","遵循最佳实践","使用这些指南构建高性能且可维护的 Nuxt 模块。",{"path":281,"title":282,"description":283},"\u002Fdocs\u002Fguide\u002Fmodules\u002Fecosystem","发布与分享你的模块","加入 Nuxt 模块生态，并将你的模块发布到 npm。",{"path":285,"title":286,"description":287},"\u002Fdocs\u002Fguide\u002Fmodules","Module Author Guide","学习如何创建 Nuxt 模块，以集成、增强或扩展任意 Nuxt 应用。",{"path":289,"title":290,"description":291},"\u002Fdocs\u002Fguide\u002Frecipes\u002Fcustom-routing","自定义路由","在 Nuxt 中，你的路由由 pages 目录内文件的结构定义。不过，由于底层使用了 vue-router，Nuxt 提供了几种在你的项目中添加自定义路由的方式。",{"path":293,"title":294,"description":295},"\u002Fdocs\u002Fguide\u002Frecipes\u002Fvite-plugin","在 Nuxt 中使用 Vite 插件","学习如何将 Vite 插件集成到你的 Nuxt 项目中。",{"path":297,"title":298,"description":299},"\u002Fdocs\u002Fguide\u002Frecipes\u002Fcustom-usefetch","Nuxt 中的自定义 useFetch","如何在 Nuxt 中创建用于调用你外部 API 的自定义 fetcher。",{"path":301,"title":302,"description":303},"\u002Fdocs\u002Fguide\u002Frecipes\u002Fsessions-and-authentication","会话与鉴权","鉴权是 Web 应用中极其常见的需求。本配方将向你展示如何在你的 Nuxt 应用中实现基本的用户注册与鉴权。",{"path":305,"title":306,"description":307},"\u002Fdocs\u002Fguide\u002Fgoing-further\u002Fevents","创建自定义事件","Nuxt 提供了一个由 hookable 驱动的强大事件系统。",{"path":309,"title":310,"description":311},"\u002Fdocs\u002Fguide\u002Fgoing-further\u002Fexperimental-features","实验性特性","启用 Nuxt 实验性特性以解锁新的可能性。",{"path":313,"title":314,"description":315},"\u002Fdocs\u002Fguide\u002Fgoing-further\u002Ffeatures","特性开关","启用或禁用可选的 Nuxt 特性，以解锁新的可能性。",{"path":317,"title":318,"description":319},"\u002Fdocs\u002Fguide\u002Fgoing-further\u002Finternals","Nuxt 是如何工作的？","Nuxt 是一个极简但高度可定制的框架，用于构建 Web 应用。",{"path":321,"title":322,"description":323},"\u002Fdocs\u002Fguide\u002Fgoing-further\u002Fruntime-config","运行时配置","Nuxt 提供了一套运行时配置 API，以在你的应用内暴露配置和密钥。",{"path":325,"title":326,"description":327},"\u002Fdocs\u002Fguide\u002Fgoing-further\u002Fnightly-release-channel","Nightly 发布通道","nightly 发布通道允许使用直接从仓库最新提交构建的 Nuxt。",{"path":329,"title":330,"description":331},"\u002Fdocs\u002Fguide\u002Fgoing-further\u002Fhooks","生命周期钩子","Nuxt 提供了一个强大的钩子系统，可使用钩子扩展几乎每个方面。",{"path":333,"title":334,"description":335},"\u002Fdocs\u002Fguide\u002Fgoing-further\u002Fkit","Nuxt Kit","@nuxt\u002Fkit 提供了面向模块作者的功能。",{"path":337,"title":338,"description":339},"\u002Fdocs\u002Fguide\u002Fgoing-further\u002Fnuxt-app","NuxtApp","在 Nuxt 中，你可以在组合式函数、组件和插件中访问运行时应用上下文。",{"path":341,"title":342,"description":343},"\u002Fdocs\u002Fguide\u002Fgoing-further\u002Flayers","编写 Nuxt Layers","Nuxt 提供了一个强大的系统，允许你扩展默认文件、配置等等。",{"path":345,"title":346,"description":347},"\u002Fdocs\u002Fguide\u002Fgoing-further\u002Fbuilders","创建 Builder","了解 Nuxt builder 是如何工作的，以及如何编写你自己的 builder。",{"path":349,"title":350,"description":351},"\u002Fdocs\u002Fguide\u002Fgoing-further\u002Fdebugging","调试","在 Nuxt 中，你可以直接在浏览器中以及你的 IDE 里开始调试你的应用。",{"path":353,"title":354,"description":354},"\u002Fdocs\u002Fguide\u002Fgoing-further","",{"path":356,"title":357,"description":358},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fclient-only","\u003CClientOnly>","使用 \u003CClientOnly> 组件仅在客户端渲染组件。",{"path":360,"title":361,"description":362},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fdev-only","\u003CDevOnly>","使用 \u003CDevOnly> 组件仅在开发期间渲染组件。",{"path":364,"title":365,"description":366},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fnuxt-client-fallback","\u003CNuxtClientFallback>","Nuxt 提供了 \u003CNuxtClientFallback> 组件，当其任意子组件在 SSR 中触发错误时，在客户端渲染其内容",{"path":368,"title":369,"description":370},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fnuxt-picture","\u003CNuxtPicture>","Nuxt 提供了 \u003CNuxtPicture> 组件来处理自动图像优化。",{"path":372,"title":373,"description":374},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fteleports","\u003CTeleport>","\u003CTeleport> 组件将组件传送到 DOM 中的另一个位置。",{"path":376,"title":377,"description":378},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fnuxt-route-announcer","\u003CNuxtRouteAnnouncer>","\u003CNuxtRouteAnnouncer> 组件添加一个带有页面标题的隐藏元素，用于向辅助技术播报路由变化。",{"path":380,"title":381,"description":382},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fnuxt-time","\u003CNuxtTime>","\u003CNuxtTime> 组件以本地化友好的格式显示时间，并保持服务端-客户端一致。",{"path":384,"title":385,"description":386},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fnuxt-announcer","\u003CNuxtAnnouncer>","\u003CNuxtAnnouncer> 组件添加一个隐藏元素，用于向辅助技术播报动态内容变化。",{"path":388,"title":389,"description":390},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fnuxt-page","\u003CNuxtPage>","\u003CNuxtPage> 组件用于显示位于 pages\u002F 目录中的页面。",{"path":392,"title":393,"description":394},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fnuxt-layout","\u003CNuxtLayout>","Nuxt 提供了 \u003CNuxtLayout> 组件，用于在页面和错误页面上显示布局。",{"path":396,"title":397,"description":398},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fnuxt-link","\u003CNuxtLink>","Nuxt 提供了 \u003CNuxtLink> 组件来处理应用内的各类链接。",{"path":400,"title":401,"description":402},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fnuxt-loading-indicator","\u003CNuxtLoadingIndicator>","在页面导航之间显示进度条。",{"path":404,"title":405,"description":406},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fnuxt-error-boundary","\u003CNuxtErrorBoundary>","\u003CNuxtErrorBoundary> 组件处理其默认插槽中发生的客户端错误。",{"path":408,"title":409,"description":410},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fnuxt-welcome","\u003CNuxtWelcome>","\u003CNuxtWelcome> 组件用于欢迎通过启动模板创建的新项目的用户。",{"path":412,"title":413,"description":414},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fnuxt-island","\u003CNuxtIsland>","Nuxt 提供了 \u003CNuxtIsland> 组件，用于渲染无客户端 JS 的非交互式组件。",{"path":416,"title":417,"description":418},"\u002Fdocs\u002Fapi\u002Fcomponents\u002Fnuxt-img","\u003CNuxtImg>","Nuxt 提供了 \u003CNuxtImg> 组件来处理自动图像优化。",{"path":420,"title":421,"description":422},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fcreate-use-async-data","createUseAsyncData","一个工厂函数，用于创建带有预定义默认选项的自定义 useAsyncData 组合式函数。",{"path":424,"title":425,"description":426},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fcreate-use-fetch","createUseFetch","一个工厂函数，用于创建带有预定义默认选项的自定义 useFetch 组合式函数。",{"path":428,"title":429,"description":430},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fon-prehydrate","onPrehydrate","使用 onPrehydrate 在 Nuxt 对页面进行 hydration 之前的客户端立即运行回调。",{"path":432,"title":433,"description":434},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-announcer","useAnnouncer","一个用于向屏幕阅读器播报消息的组合式函数。",{"path":436,"title":437,"description":438},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-app-config","useAppConfig","访问在项目中定义的可响应 app config。",{"path":440,"title":441,"description":442},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-async-data","useAsyncData","useAsyncData 以 SSR 友好的方式提供对异步解析数据的访问。",{"path":444,"title":445,"description":446},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-cookie","useCookie","useCookie 是一个 SSR 友好的组合式函数，用于读写 cookie。",{"path":448,"title":449,"description":450},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-error","useError","useError 组合式函数返回正在被处理的全局 Nuxt 错误。",{"path":452,"title":453,"description":454},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-fetch","useFetch","使用 SSR 友好的组合式函数从 API 端点获取数据。",{"path":456,"title":457,"description":458},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-head","useHead","useHead 用于自定义 Nuxt 应用各个页面的 head 属性。",{"path":460,"title":461,"description":462},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-head-safe","useHeadSafe","处理用户输入时提供 head 数据的推荐方式。",{"path":464,"title":465,"description":466},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-hydration","useHydration","允许完全控制 hydration 周期，以便从服务端设置和接收数据。",{"path":468,"title":469,"description":470},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-layout","useLayout","useLayout 返回为当前路由解析出的布局。",{"path":472,"title":473,"description":474},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-lazy-async-data","useLazyAsyncData","该组合式函数包装 useAsyncData，会在 handler 解析之前立即触发导航。",{"path":476,"title":477,"description":478},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-lazy-fetch","useLazyFetch","该组合式函数是对 useFetch 的封装，会在 handler 解析之前立即触发导航。",{"path":480,"title":481,"description":482},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-loading-indicator","useLoadingIndicator","该组合式函数让你访问应用页面的加载状态。",{"path":484,"title":485,"description":486},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-nuxt-app","useNuxtApp","访问 Nuxt 应用的共享运行时上下文。",{"path":488,"title":489,"description":490},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-nuxt-data","useNuxtData","访问数据获取组合式函数的当前缓存值。",{"path":492,"title":493,"description":494},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-preview-mode","usePreviewMode","使用 usePreviewMode 检查并控制 Nuxt 的预览模式",{"path":496,"title":497,"description":498},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-request-event","useRequestEvent","使用 useRequestEvent 组合式函数访问传入的请求事件。",{"path":500,"title":501,"description":502},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-request-fetch","useRequestFetch","使用 useRequestFetch 组合式函数为服务端 fetch 请求转发请求上下文和请求头。",{"path":504,"title":505,"description":506},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-request-header","useRequestHeader","使用 useRequestHeader 访问某个特定的传入请求头。",{"path":508,"title":509,"description":510},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-request-headers","useRequestHeaders","使用 useRequestHeaders 访问传入的请求头。",{"path":512,"title":513,"description":514},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-request-url","useRequestURL","使用 useRequestURL 组合式函数访问传入的请求 URL。",{"path":516,"title":517,"description":518},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-response-header","useResponseHeader","使用 useResponseHeader 设置服务端响应头。",{"path":520,"title":521,"description":522},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-route","useRoute","useRoute 组合式函数返回当前路由。",{"path":524,"title":525,"description":526},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-route-announcer","useRouteAnnouncer","该组合式函数监视页面标题变化，并相应地更新播报消息。",{"path":528,"title":529,"description":530},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-router","useRouter","useRouter 组合式函数返回 router 实例。",{"path":532,"title":533,"description":534},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-runtime-config","useRuntimeConfig","使用 useRuntimeConfig 组合式函数访问运行时配置变量。",{"path":536,"title":537,"description":538},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-runtime-hook","useRuntimeHook","在 Nuxt 应用中注册一个运行时钩子，并确保在作用域销毁时被正确清理。",{"path":540,"title":541,"description":542},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-seo-meta","useSeoMeta","useSeoMeta 组合式函数让你可以将站点的 SEO meta 标签定义为一个扁平对象，并提供完整的 TypeScript 支持。",{"path":544,"title":545,"description":546},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-server-seo-meta","useServerSeoMeta","useServerSeoMeta 组合式函数让你可以将站点的 SEO meta 标签定义为一个扁平对象，并提供完整的 TypeScript 支持。",{"path":548,"title":549,"description":550},"\u002Fdocs\u002Fapi\u002Fcomposables\u002Fuse-state","useState","useState 组合式函数创建一个可响应的、SSR 友好的共享状态。",{"path":552,"title":553,"description":554},"\u002Fdocs\u002Fapi\u002Futils\u002Fdollarfetch","$fetch","Nuxt 使用 ofetch 全局暴露了 $fetch 辅助函数，用于发起 HTTP 请求。",{"path":556,"title":557,"description":558},"\u002Fdocs\u002Fapi\u002Futils\u002Fabort-navigation","abortNavigation","abortNavigation 是一个辅助函数，用于阻止导航的发生，并在设置了参数时抛出错误。",{"path":560,"title":561,"description":562},"\u002Fdocs\u002Fapi\u002Futils\u002Fadd-route-middleware","addRouteMiddleware","addRouteMiddleware() 是一个在你的应用中动态添加中间件的辅助函数。",{"path":564,"title":565,"description":566},"\u002Fdocs\u002Fapi\u002Futils\u002Fcall-once","callOnce","在 SSR 或 CSR 期间只运行一次给定的函数或代码块。",{"path":568,"title":569,"description":570},"\u002Fdocs\u002Fapi\u002Futils\u002Fclear-error","clearError","clearError 组合式函数清除所有已处理的错误。",{"path":572,"title":573,"description":574},"\u002Fdocs\u002Fapi\u002Futils\u002Fclear-nuxt-data","clearNuxtData","删除 useAsyncData 和 useFetch 的缓存数据、错误状态和挂起的 promise。",{"path":576,"title":577,"description":578},"\u002Fdocs\u002Fapi\u002Futils\u002Fclear-nuxt-state","clearNuxtState","删除 useState 的缓存状态。",{"path":580,"title":581,"description":582},"\u002Fdocs\u002Fapi\u002Futils\u002Fcreate-error","createError","创建一个带有附加元数据的错误对象。",{"path":584,"title":585,"description":586},"\u002Fdocs\u002Fapi\u002Futils\u002Fdefine-lazy-hydration-component","defineLazyHydrationComponent","使用特定策略定义一个懒加载 hydration 组件。",{"path":588,"title":589,"description":590},"\u002Fdocs\u002Fapi\u002Futils\u002Fdefine-nuxt-component","defineNuxtComponent","defineNuxtComponent() 是一个用于使用 Options API 定义类型安全组件的辅助函数。",{"path":592,"title":593,"description":594},"\u002Fdocs\u002Fapi\u002Futils\u002Fdefine-nuxt-plugin","defineNuxtPlugin","defineNuxtPlugin() 是一个用于创建 Nuxt 插件的辅助函数。",{"path":596,"title":597,"description":598},"\u002Fdocs\u002Fapi\u002Futils\u002Fdefine-nuxt-route-middleware","defineNuxtRouteMiddleware","使用 defineNuxtRouteMiddleware 辅助函数创建命名路由中间件。",{"path":600,"title":601,"description":602},"\u002Fdocs\u002Fapi\u002Futils\u002Fdefine-page-meta","definePageMeta","为你的页面组件定义元数据。",{"path":604,"title":605,"description":606},"\u002Fdocs\u002Fapi\u002Futils\u002Fdefine-route-rules","defineRouteRules","在页面层面定义用于混合渲染的路由规则。",{"path":608,"title":609,"description":610},"\u002Fdocs\u002Fapi\u002Futils\u002Fnavigate-to","navigateTo","navigateTo 是一个用于以编程方式导航用户的辅助函数。",{"path":612,"title":613,"description":614},"\u002Fdocs\u002Fapi\u002Futils\u002Fon-before-route-leave","onBeforeRouteLeave","onBeforeRouteLeave 组合式函数允许在组件内部注册一个路由守卫。",{"path":616,"title":617,"description":618},"\u002Fdocs\u002Fapi\u002Futils\u002Fon-before-route-update","onBeforeRouteUpdate","onBeforeRouteUpdate 组合式函数允许在组件内部注册一个路由守卫。",{"path":620,"title":621,"description":622},"\u002Fdocs\u002Fapi\u002Futils\u002Fon-nuxt-ready","onNuxtReady","onNuxtReady 组合式函数允许在你的应用完成初始化之后运行一个回调。",{"path":624,"title":625,"description":626},"\u002Fdocs\u002Fapi\u002Futils\u002Fprefetch-components","prefetchComponents","Nuxt 提供了用于在预取组件方面给予你控制的工具。",{"path":628,"title":629,"description":630},"\u002Fdocs\u002Fapi\u002Futils\u002Fpreload-components","preloadComponents","Nuxt 提供了用于在预加载组件方面给予你控制的工具。",{"path":632,"title":633,"description":634},"\u002Fdocs\u002Fapi\u002Futils\u002Fpreload-route-components","preloadRouteComponents","preloadRouteComponents 允许你手动预加载 Nuxt 应用中的单个页面。",{"path":636,"title":637,"description":638},"\u002Fdocs\u002Fapi\u002Futils\u002Fprerender-routes","prerenderRoutes","prerenderRoutes 向 Nitro 暗示预渲染一个额外的路由。",{"path":640,"title":641,"description":642},"\u002Fdocs\u002Fapi\u002Futils\u002Frefresh-cookie","refreshCookie","当 cookie 发生变化时，手动刷新 useCookie 的值",{"path":644,"title":645,"description":646},"\u002Fdocs\u002Fapi\u002Futils\u002Frefresh-nuxt-data","refreshNuxtData","刷新 Nuxt 中所有或特定的 asyncData 实例",{"path":648,"title":649,"description":650},"\u002Fdocs\u002Fapi\u002Futils\u002Freload-nuxt-app","reloadNuxtApp","reloadNuxtApp 会对页面执行一次硬刷新。",{"path":652,"title":653,"description":654},"\u002Fdocs\u002Fapi\u002Futils\u002Fset-page-layout","setPageLayout","setPageLayout 允许你动态更改页面的布局。",{"path":656,"title":657,"description":658},"\u002Fdocs\u002Fapi\u002Futils\u002Fset-response-status","setResponseStatus","setResponseStatus 设置响应的状态码（以及可选的 statusText）。",{"path":660,"title":661,"description":662},"\u002Fdocs\u002Fapi\u002Futils\u002Fshow-error","showError","Nuxt 提供了一种快速且简单的方式，在需要的时候显示全屏错误页。",{"path":664,"title":665,"description":666},"\u002Fdocs\u002Fapi\u002Futils\u002Fupdate-app-config","updateAppConfig","在运行时更新 App Config。",{"path":668,"title":669,"description":670},"\u002Fdocs\u002Fapi\u002Fcommands\u002Fadd","nuxt add","在你的 Nuxt 应用中快速搭建一个实体（文件）。",{"path":672,"title":673,"description":674},"\u002Fdocs\u002Fapi\u002Fcommands\u002Fanalyze","nuxt analyze","分析生产环境的打包产物或你的 Nuxt 应用。",{"path":676,"title":677,"description":678},"\u002Fdocs\u002Fapi\u002Fcommands\u002Fbuild","nuxt build","构建你的 Nuxt 应用。",{"path":680,"title":681,"description":682},"\u002Fdocs\u002Fapi\u002Fcommands\u002Fbuild-module","nuxt build-module","用于在发布前构建你的 Nuxt 模块的 Nuxt 命令。",{"path":684,"title":685,"description":686},"\u002Fdocs\u002Fapi\u002Fcommands\u002Fcleanup","nuxt cleanup","移除常见的 Nuxt 生成文件和缓存。",{"path":688,"title":689,"description":690},"\u002Fdocs\u002Fapi\u002Fcommands\u002Fdev","nuxt dev","dev 命令会在 http:\u002F\u002Flocalhost:3000 启动一个带有热模块替换（HMR）的开发服务器。",{"path":692,"title":693,"description":694},"\u002Fdocs\u002Fapi\u002Fcommands\u002Fdevtools","nuxt devtools","devtools 命令允许你基于每个项目启用或禁用 Nuxt DevTools。",{"path":696,"title":697,"description":698},"\u002Fdocs\u002Fapi\u002Fcommands\u002Fgenerate","nuxt generate","预渲染应用的每一个路由，并将结果存储为纯 HTML 文件。",{"path":700,"title":701,"description":702},"\u002Fdocs\u002Fapi\u002Fcommands\u002Finfo","nuxt info","info 命令会记录当前或指定 Nuxt 项目的相关信息。",{"path":704,"title":705,"description":706},"\u002Fdocs\u002Fapi\u002Fcommands\u002Finit","create nuxt","init 命令用于初始化一个全新的 Nuxt 项目。",{"path":708,"title":709,"description":710},"\u002Fdocs\u002Fapi\u002Fcommands\u002Fmodule","nuxt module","通过命令行搜索并向你的 Nuxt 应用添加模块。",{"path":712,"title":713,"description":714},"\u002Fdocs\u002Fapi\u002Fcommands\u002Fprepare","nuxt prepare","prepare 命令会在你的应用中创建一个 .nuxt 目录并生成类型。",{"path":716,"title":717,"description":718},"\u002Fdocs\u002Fapi\u002Fcommands\u002Fpreview","nuxt preview","preview 命令会启动一个服务器，用于在运行 build 命令后预览你的应用。",{"path":720,"title":721,"description":722},"\u002Fdocs\u002Fapi\u002Fcommands\u002Ftest","nuxt test","test 命令使用 @nuxt\u002Ftest-utils 运行测试。",{"path":724,"title":725,"description":726},"\u002Fdocs\u002Fapi\u002Fcommands\u002Ftypecheck","nuxt typecheck","typecheck 命令运行 vue-tsc 来全量检查你的应用类型。",{"path":728,"title":729,"description":730},"\u002Fdocs\u002Fapi\u002Fcommands\u002Fupgrade","nuxt upgrade","upgrade 命令将 Nuxt 升级到最新版本。",{"path":732,"title":733,"description":734},"\u002Fdocs\u002Fapi\u002Fkit\u002Fmodules","Modules","Nuxt Kit 提供了一系列工具，帮助你创建和使用模块。你可以使用这些工具来创建自己的模块，或复用已有的模块。",{"path":736,"title":737,"description":738},"\u002Fdocs\u002Fapi\u002Fkit\u002Fruntime-config","Runtime Config","Nuxt Kit 提供了一系列工具，帮助你访问和修改 Nuxt 运行时配置。",{"path":740,"title":741,"description":742},"\u002Fdocs\u002Fapi\u002Fkit\u002Ftemplates","Templates","Nuxt Kit 提供了一系列工具，帮助你处理模板。这些函数允许你在开发和构建期间生成额外的文件。",{"path":744,"title":745,"description":746},"\u002Fdocs\u002Fapi\u002Fkit\u002Fapp-config","App Config","Nuxt Kit 提供了一系列工具，帮助你访问和修改 Nuxt 应用配置。",{"path":748,"title":749,"description":750},"\u002Fdocs\u002Fapi\u002Fkit\u002Fnitro","Nitro","Nuxt Kit 提供了一系列工具，帮助你使用 Nitro。这些函数允许你添加服务器处理器、插件和预渲染路由。",{"path":752,"title":753,"description":754},"\u002Fdocs\u002Fapi\u002Fkit\u002Fresolving","Resolving","Nuxt Kit 提供了从 Nuxt 根目录或自定义基准路径解析路径的实用工具。",{"path":756,"title":757,"description":758},"\u002Fdocs\u002Fapi\u002Fkit\u002Flogging","Logging","Nuxt Kit 提供了一系列工具，帮助你使用日志记录。这些函数允许你以额外功能记录消息。",{"path":760,"title":761,"description":762},"\u002Fdocs\u002Fapi\u002Fkit\u002Fbuilder","Builder","Nuxt Kit 提供了一系列工具，帮助你使用构建器。这些函数允许你扩展 Vite 和 webpack 配置。",{"path":764,"title":765,"description":766},"\u002Fdocs\u002Fapi\u002Fkit\u002Fexamples","Examples","Nuxt Kit 工具的使用示例。",{"path":768,"title":58,"description":769},"\u002Fdocs\u002Fapi\u002Fkit\u002Flayers","Nuxt Kit 提供了帮助你处理层及其目录结构的工具。",{"path":771,"title":772,"description":773},"\u002Fdocs\u002Fapi\u002Fkit\u002Fprogrammatic","Programmatic Usage","Nuxt Kit 提供了一系列工具，帮助你以编程方式使用 Nuxt。这些函数允许你加载 Nuxt、构建 Nuxt，以及加载 Nuxt 配置。",{"path":775,"title":776,"description":777},"\u002Fdocs\u002Fapi\u002Fkit\u002Fcompatibility","Compatibility","Nuxt Kit 提供了一系列工具，帮助你检查模块与不同 Nuxt 版本的兼容性。",{"path":779,"title":780,"description":781},"\u002Fdocs\u002Fapi\u002Fkit\u002Fautoimports","Auto-imports","Nuxt Kit 提供了一系列工具，帮助你处理自动导入。这些函数允许你注册自己的 utils、composables 和 Vue API。",{"path":783,"title":784,"description":785},"\u002Fdocs\u002Fapi\u002Fkit\u002Fcomponents","Components","Nuxt Kit 提供了一系列工具，帮助你处理组件。你可以全局或局部注册组件，也可以添加要被扫描的目录。",{"path":787,"title":788,"description":789},"\u002Fdocs\u002Fapi\u002Fkit\u002Fcontext","Context","Nuxt Kit 提供了一系列工具，帮助你处理上下文。",{"path":791,"title":792,"description":793},"\u002Fdocs\u002Fapi\u002Fkit\u002Fpages","Pages","Nuxt Kit 提供了一系列工具，帮助你创建和使用页面。你可以使用这些工具来操作页面配置或定义路由规则。",{"path":795,"title":796,"description":797},"\u002Fdocs\u002Fapi\u002Fkit\u002Flayout","Layout","Nuxt Kit 提供了一系列工具，帮助你处理布局。",{"path":799,"title":800,"description":801},"\u002Fdocs\u002Fapi\u002Fkit\u002Fhead","Head","Nuxt Kit 提供了一系列工具，帮助你在模块中管理 head 配置。",{"path":803,"title":804,"description":805},"\u002Fdocs\u002Fapi\u002Fkit\u002Fplugins","Plugins","Nuxt Kit 提供了一系列工具，帮助你创建和使用插件。你可以使用这些函数向你的模块添加插件或插件模板。",{"path":807,"title":330,"description":808},"\u002Fdocs\u002Fapi\u002Fadvanced\u002Fhooks","Nuxt 提供了一套强大的钩子系统，可以通过钩子扩展几乎各个方面。",{"path":810,"title":811,"description":812},"\u002Fdocs\u002Fapi\u002Fadvanced\u002Fimport-meta","Import meta","使用 `import.meta` 了解你的代码运行在何处。",{"path":814,"title":815,"description":816},"\u002Fdocs\u002Fapi\u002Fnuxt-config","Nuxt 配置","发现你可以在 nuxt.config.ts 文件中使用的所有选项。",{"path":818,"title":819,"description":820},"\u002Fdocs\u002Fapi","Nuxt API 参考","探索所有 Nuxt 内部机制：组件、组合式函数、工具函数、命令等等。",{"path":822,"title":823,"description":824},"\u002Fdocs\u002Fcommunity\u002Fgetting-help","获取帮助","我们是一个友好的开发者社区，很乐意提供帮助。",{"path":826,"title":827,"description":828},"\u002Fdocs\u002Fcommunity\u002Freporting-bugs","报告 Bug","开源中最有价值的角色之一，就是花时间把 bug 报告得清楚明白。",{"path":830,"title":831,"description":832},"\u002Fdocs\u002Fcommunity\u002Fcontribution","贡献","Nuxt 是一个社区项目——因此我们欢迎各种形式的贡献！❤️",{"path":834,"title":835,"description":836},"\u002Fdocs\u002Fcommunity\u002Fframework-contribution","框架贡献","关于向框架仓库贡献的一些具体要点。",{"path":838,"title":839,"description":840},"\u002Fdocs\u002Fcommunity\u002Froadmap","路线图","Nuxt 在不断发展，新功能和模块一直在增加。",{"path":842,"title":843,"description":844},"\u002Fdocs\u002Fcommunity\u002Fchangelog","发布","发现 Nuxt 及 Nuxt 官方模块的最新发布。",{"path":846,"title":847,"description":848},"\u002Fdocs\u002Fbridge\u002Foverview","概述","缩小与 Nuxt 3 的差异，并减轻迁移到 Nuxt 3 的负担。",{"path":850,"title":14,"description":851},"\u002Fdocs\u002Fbridge\u002Fconfiguration","了解如何根据你的需求配置 Nuxt Bridge。",{"path":853,"title":222,"description":854},"\u002Fdocs\u002Fbridge\u002Ftypescript","了解如何在 Nuxt Bridge 中使用 TypeScript。",{"path":856,"title":857,"description":858},"\u002Fdocs\u002Fbridge\u002Fbridge-composition-api","旧版 Composition API","了解如何使用 Nuxt Bridge 迁移到 Composition API。",{"path":860,"title":861,"description":862},"\u002Fdocs\u002Fbridge\u002Fplugins-and-middleware","插件和中间件","了解如何从 Nuxt 2 迁移到 Nuxt Bridge 的新插件和中间件。",{"path":864,"title":865,"description":866},"\u002Fdocs\u002Fbridge\u002Fnuxt3-compatible-api","新的 Composition API","Nuxt Bridge 实现了与 Nuxt 3 兼容的组合式函数。",{"path":868,"title":869,"description":870},"\u002Fdocs\u002Fbridge\u002Fmeta","Meta 标签","了解如何从 Nuxt 2 迁移到 Nuxt Bridge 的新 meta 标签。",{"path":872,"title":322,"description":873},"\u002Fdocs\u002Fbridge\u002Fruntime-config","Nuxt 提供了一个运行时配置 API，用于在应用中暴露配置和密钥。",{"path":875,"title":749,"description":876},"\u002Fdocs\u002Fbridge\u002Fnitro","通过 Nuxt Bridge 为你的 Nuxt 2 应用激活 Nitro。",{"path":878,"title":879,"description":880},"\u002Fdocs\u002Fbridge\u002Fvite","Vite","通过 Nuxt Bridge 为你的 Nuxt 2 应用激活 Vite。",{"path":882,"title":847,"description":883},"\u002Fdocs\u002Fmigration\u002Foverview","Nuxt 3 是对 Nuxt 2 的完整重写，并且基于一套全新的底层技术。",{"path":885,"title":886,"description":887},"\u002Fdocs\u002Fmigration\u002Fbundling","构建工具","了解如何从 Nuxt 2 迁移到 Nuxt 3 的构建工具。",{"path":889,"title":890,"description":891},"\u002Fdocs\u002Fmigration\u002Fserver","服务器","了解如何从 Nuxt 2 迁移到 Nuxt 3 的服务器。",{"path":893,"title":14,"description":894},"\u002Fdocs\u002Fmigration\u002Fconfiguration","了解如何从 Nuxt 2 迁移到 Nuxt 3 的新配置。",{"path":896,"title":214,"description":897},"\u002Fdocs\u002Fmigration\u002Fmodule-authors","了解如何从 Nuxt 2 迁移到 Nuxt 3 模块。",{"path":899,"title":206,"description":900},"\u002Fdocs\u002Fmigration\u002Fauto-imports","Nuxt 3 采用最小摩擦的方式，即在任何可能的地方自动导入组件和组合式函数。",{"path":902,"title":869,"description":903},"\u002Fdocs\u002Fmigration\u002Fmeta","管理你的 meta 标签，从 Nuxt 2 到 Nuxt 3。",{"path":905,"title":861,"description":906},"\u002Fdocs\u002Fmigration\u002Fplugins-and-middleware","了解如何从 Nuxt 2 迁移到 Nuxt 3 的插件和中间件。",{"path":908,"title":909,"description":910},"\u002Fdocs\u002Fmigration\u002Fpages-and-layouts","页面和布局","了解如何从 Nuxt 2 迁移到 Nuxt 3 的页面和布局。",{"path":912,"title":913,"description":914},"\u002Fdocs\u002Fmigration\u002Fcomponent-options","组件选项","了解如何从 Nuxt 2 的组件选项迁移到 Nuxt 3 的组合式函数。",{"path":916,"title":322,"description":917},"\u002Fdocs\u002Fmigration\u002Fruntime-config","了解如何从 Nuxt 2 迁移到 Nuxt 3 的运行时配置。",{"path":919,"title":920,"description":921},"\u002Fdocs\u002Freadme","Nuxt 文档","本仓库包含 Nuxt 的文档，托管于 https:\u002F\u002Fnuxt.com\u002Fdocs\u002Fgetting-started\u002Fintroduction",{"path":923,"title":924,"description":925},"\u002Fdocs\u002Ferrors\u002Fb5001","NUXT_B5001","缺少 compatibilityDate (兼容性日期)",{"path":927,"title":928,"description":929},"\u002Fdocs\u002Ferrors\u002Fb5003","NUXT_B5003","保留的 runtimeConfig.app 命名空间",{"path":931,"title":932,"description":933},"\u002Fdocs\u002Ferrors\u002Fb5004","NUXT_B5004","不支持外部配置文件",{"path":935,"title":936,"description":937},"\u002Fdocs\u002Ferrors\u002Fe1001","NUXT_E1001","在 Nuxt 上下文之外调用了组合式函数。",{"path":939,"title":940,"description":941},"\u002Fdocs\u002Ferrors\u002Fe1006","NUXT_E1006","onPrehydrate 未被构建流水线处理。",{"path":943,"title":944,"description":945},"\u002Fdocs\u002Ferrors\u002Fe1007","NUXT_E1007","编译期提示辅助函数在运行时被调用。",{"path":947,"title":948,"description":949},"\u002Fdocs\u002Ferrors\u002Fe2001","NUXT_E2001","外部导航未设置 external: true。",{"path":951,"title":952,"description":953},"\u002Fdocs\u002Ferrors\u002Fe2002","NUXT_E2002","使用了危险协议的导航。",{"path":955,"title":956,"description":957},"\u002Fdocs\u002Ferrors\u002Fe2003","NUXT_E2003","abortNavigation() 在中间件之外被调用。",{"path":959,"title":960,"description":961},"\u002Fdocs\u002Ferrors\u002Fe2004","NUXT_E2004","未知的路由中间件。",{"path":963,"title":964,"description":965},"\u002Fdocs\u002Ferrors\u002Fe2005","NUXT_E2005","在中间件内调用了 useRoute。",{"path":967,"title":968,"description":969},"\u002Fdocs\u002Ferrors\u002Fe2007","NUXT_E2007","在组件中于服务端调用了 setPageLayout。",{"path":971,"title":972,"description":973},"\u002Fdocs\u002Ferrors\u002Fe3001","NUXT_E3001","useFetch 的请求 URL 以 \"\u002F\u002F\" 开头。",{"path":975,"title":976,"description":977},"\u002Fdocs\u002Ferrors\u002Fe3008","NUXT_E3008","useAsyncData 的 key 必须是非空字符串。",{"path":979,"title":980,"description":981},"\u002Fdocs\u002Ferrors\u002Fe3009","NUXT_E3009","useAsyncData 的处理函数必须是一个函数。",{"path":983,"title":984,"description":985},"\u002Fdocs\u002Ferrors\u002Fe4012","NUXT_E4012","无法解析 island（岛）响应。",{"path":987,"title":988,"description":989},"\u002Fdocs\u002Ferrors\u002Fe4016","NUXT_E4016","嵌套页面无法显示，因为其父页面没有渲染 \u003CNuxtPage \u002F>。",{"path":991,"title":992,"description":993},"\u002Fdocs\u002Ferrors\u002Fe5001","NUXT_E5001","应用清单（app manifest）未启用。",{"path":995,"title":996,"description":997},"\u002Fdocs\u002Ferrors\u002Fe6001","NUXT_E6001","缺少 Unhead 实例。",{"path":999,"title":1000,"description":1001},"\u002Fdocs\u002Ferrors\u002Fe7001","NUXT_E7001","Payload URL 包含主机名。",{"path":1003,"title":1004,"description":1005},"\u002Fdocs\u002Ferrors\u002Fe7007","NUXT_E7007","useState 的初始化值必须是一个函数。",{"path":1007,"title":1008,"description":1009},"\u002Fdocs\u002Ferrors\u002Fe7008","NUXT_E7008","callOnce 的 fn 必须是一个函数。",{"path":1011,"title":1012,"description":1013},"\u002Fdocs\u002Ferrors\u002Fe7009","NUXT_E7009","useState 的 key 必须是一个字符串。",{"path":1015,"title":1016,"description":1017},"\u002Fdocs\u002Ferrors\u002Fe7010","NUXT_E7010","callOnce 的 key 必须是一个字符串。",{"id":1019,"title":441,"body":1020,"description":442,"extension":4432,"meta":4433,"navigation":4439,"path":440,"seo":4440,"stem":4441,"__hash__":4442},"docs\u002Fdocs\u002F4.api\u002F2.composables\u002Fuse-async-data.md",{"type":1021,"value":1022,"toc":4417},"minimark",[1023,1027,1030,1049,1053,1239,1243,1255,1257,1295,1297,1329,1334,1341,1541,1545,1548,1711,1719,1732,1855,1867,2057,2066,2272,2275,2299,2302,2313,2317,2320,3237,3239,3242,3265,3267,3281,3293,3582,3584,3593,3598,3670,3681,3683,3698,3700,3712,3717,3720,3735,3742,3772,3778,3804,4134,4136,4146,4149,4168,4170,4173,4175,4198,4363,4365,4380,4383,4413],[1024,1025,1026],"p",{},"在你的页面、组件和插件中，可以使用 useAsyncData 来获取异步解析的数据。",[1028,1029],"note",{},[1024,1031,1032,1038,1039,1043,1044,1048],{},[1033,1034,1035],"a",{"href":440},[1036,1037,441],"code",{}," 是一个用于在 ",[1033,1040,1042],{"href":1041},"\u002Fdocs\u002Fguide\u002Fgoing-further\u002Fnuxt-app#the-nuxt-context","Nuxt 上下文"," 中直接调用的组合式函数。它返回可响应的组合式值，并处理将响应添加到 Nuxt payload 中，这样它们就可以从服务端传递到客户端，",[1045,1046,1047],"strong",{},"在页面 hydration 时无需在客户端重新获取数据","。\n:",[1050,1051,1052],"h2",{"id":1052},"用法",[1054,1055,1060],"pre",{"className":1056,"code":1057,"filename":1058,"language":1059,"meta":354,"style":354},"language-vue shiki shiki-themes material-theme-lighter github-dark material-theme-palenight","\u003Cscript setup lang=\"ts\">\nconst { data, status, pending, error, refresh, clear } = await useAsyncData(\n  'mountains',\n  (_nuxtApp, { signal }) => $fetch('https:\u002F\u002Fapi.nuxtjs.dev\u002Fmountains', { signal }),\n)\n\u003C\u002Fscript>\n","app\u002Fpages\u002Findex.vue","vue",[1036,1061,1062,1098,1157,1172,1223,1229],{"__ignoreMap":354},[1063,1064,1067,1071,1075,1079,1082,1085,1089,1093,1095],"span",{"class":1065,"line":1066},"line",1,[1063,1068,1070],{"class":1069},"sF54B","\u003C",[1063,1072,1074],{"class":1073},"s6g6u","script",[1063,1076,1078],{"class":1077},"sXjFp"," setup",[1063,1080,1081],{"class":1077}," lang",[1063,1083,1084],{"class":1069},"=",[1063,1086,1088],{"class":1087},"s0jeK","\"",[1063,1090,1092],{"class":1091},"s-Aze","ts",[1063,1094,1088],{"class":1087},[1063,1096,1097],{"class":1069},">\n",[1063,1099,1101,1105,1108,1112,1115,1118,1120,1123,1125,1128,1130,1133,1135,1138,1141,1145,1149,1153],{"class":1065,"line":1100},2,[1063,1102,1104],{"class":1103},"sV7Px","const",[1063,1106,1107],{"class":1069}," {",[1063,1109,1111],{"class":1110},"sJTDI"," data",[1063,1113,1114],{"class":1069},",",[1063,1116,1117],{"class":1110}," status",[1063,1119,1114],{"class":1069},[1063,1121,1122],{"class":1110}," pending",[1063,1124,1114],{"class":1069},[1063,1126,1127],{"class":1110}," error",[1063,1129,1114],{"class":1069},[1063,1131,1132],{"class":1110}," refresh",[1063,1134,1114],{"class":1069},[1063,1136,1137],{"class":1110}," clear",[1063,1139,1140],{"class":1069}," }",[1063,1142,1144],{"class":1143},"sXPRQ"," =",[1063,1146,1148],{"class":1147},"szyBz"," await",[1063,1150,1152],{"class":1151},"srJn9"," useAsyncData",[1063,1154,1156],{"class":1155},"smVNa","(\n",[1063,1158,1160,1163,1166,1169],{"class":1065,"line":1159},3,[1063,1161,1162],{"class":1087},"  '",[1063,1164,1165],{"class":1091},"mountains",[1063,1167,1168],{"class":1087},"'",[1063,1170,1171],{"class":1069},",\n",[1063,1173,1175,1178,1182,1184,1186,1189,1192,1195,1198,1201,1203,1206,1208,1210,1212,1215,1218,1221],{"class":1065,"line":1174},4,[1063,1176,1177],{"class":1069},"  (",[1063,1179,1181],{"class":1180},"ssIVr","_nuxtApp",[1063,1183,1114],{"class":1069},[1063,1185,1107],{"class":1069},[1063,1187,1188],{"class":1180}," signal",[1063,1190,1191],{"class":1069}," })",[1063,1193,1194],{"class":1103}," =>",[1063,1196,1197],{"class":1151}," $fetch",[1063,1199,1200],{"class":1155},"(",[1063,1202,1168],{"class":1087},[1063,1204,1205],{"class":1091},"https:\u002F\u002Fapi.nuxtjs.dev\u002Fmountains",[1063,1207,1168],{"class":1087},[1063,1209,1114],{"class":1069},[1063,1211,1107],{"class":1069},[1063,1213,1214],{"class":1155}," signal ",[1063,1216,1217],{"class":1069},"}",[1063,1219,1220],{"class":1155},")",[1063,1222,1171],{"class":1069},[1063,1224,1226],{"class":1065,"line":1225},5,[1063,1227,1228],{"class":1155},")\n",[1063,1230,1232,1235,1237],{"class":1065,"line":1231},6,[1063,1233,1234],{"class":1069},"\u003C\u002F",[1063,1236,1074],{"class":1073},[1063,1238,1097],{"class":1069},[1240,1241],"tip",{"to":1242},"\u002Fdocs\u002Fguide\u002Frecipes\u002Fcustom-usefetch#custom-usefetch-with-createusefetch",[1024,1244,1245,1246,1248,1249,1251,1252,1048],{},"需要一个带有预定义默认值的自定义 ",[1036,1247,441],{},"？使用 ",[1036,1250,421],{}," 创建一个完全类型化的自定义组合式函数。详见 ",[1033,1253,1254],{"href":297},"custom useFetch 配方",[1028,1256],{},[1024,1258,1259,1260,1263,1264,1266,1267,1269,1270,1273,1274,1276,1277,1280,1281,1284,1285,1291,1292,1294],{},"你无需 ",[1036,1261,1262],{},"await"," ",[1036,1265,441],{},"。在服务端，无论哪种情况 Nuxt 都会等待 promise 解析完成后再渲染，因此返回的 HTML 始终包含数据。",[1036,1268,1262],{}," 影响的是调用之后发生的事情：使用它时，执行会暂停直到 ",[1036,1271,1272],{},"data"," 被填充，且客户端导航会阻塞直到数据就绪；不使用它时，执行立即继续，",[1036,1275,1272],{}," 在请求解析完成前保持其默认值，在客户端导航时你需要使用返回的 ",[1036,1278,1279],{},"status"," 和 ",[1036,1282,1283],{},"error"," ref 自行处理加载和错误状态。这与 ",[1033,1286,1288],{"href":1287},"#parameters",[1036,1289,1290],{},"lazy"," 选项效果类似，不过 ",[1036,1293,1290],{}," 是显式选择非阻塞导航的方式。\n:",[1028,1296],{},[1024,1298,1299,1301,1302,1301,1304,1280,1307,1309,1310,1313,1314,1317,1318,1321,1322,1280,1325,1328],{},[1036,1300,1272],{},"、",[1036,1303,1279],{},[1036,1305,1306],{},"pending",[1036,1308,1283],{}," 是 Vue ref。在 ",[1036,1311,1312],{},"\u003Cscript setup>"," 中通过 ",[1036,1315,1316],{},".value"," 访问它们的值。",[1036,1319,1320],{},"refresh","\u002F",[1036,1323,1324],{},"execute",[1036,1326,1327],{},"clear"," 是普通函数。\n:",[1330,1331,1333],"h3",{"id":1332},"watch-参数","Watch 参数",[1024,1335,1336,1337,1340],{},"内置的 ",[1036,1338,1339],{},"watch"," 选项允许在检测到任何变化时自动重新运行 fetcher 函数。",[1054,1342,1344],{"className":1056,"code":1343,"filename":1058,"language":1059,"meta":354,"style":354},"\u003Cscript setup lang=\"ts\">\nconst page = ref(1)\nconst { data: posts } = await useAsyncData(\n  'posts',\n  (_nuxtApp, { signal }) => $fetch('https:\u002F\u002FfakeApi.com\u002Fposts', {\n    params: {\n      page: page.value,\n    },\n    signal,\n  }), {\n    watch: [page],\n  },\n)\n\u003C\u002Fscript>\n",[1036,1345,1346,1366,1386,1411,1422,1454,1464,1482,1488,1496,1508,1521,1527,1532],{"__ignoreMap":354},[1063,1347,1348,1350,1352,1354,1356,1358,1360,1362,1364],{"class":1065,"line":1066},[1063,1349,1070],{"class":1069},[1063,1351,1074],{"class":1073},[1063,1353,1078],{"class":1077},[1063,1355,1081],{"class":1077},[1063,1357,1084],{"class":1069},[1063,1359,1088],{"class":1087},[1063,1361,1092],{"class":1091},[1063,1363,1088],{"class":1087},[1063,1365,1097],{"class":1069},[1063,1367,1368,1370,1373,1375,1378,1380,1384],{"class":1065,"line":1100},[1063,1369,1104],{"class":1103},[1063,1371,1372],{"class":1110}," page",[1063,1374,1144],{"class":1143},[1063,1376,1377],{"class":1151}," ref",[1063,1379,1200],{"class":1155},[1063,1381,1383],{"class":1382},"sOUxV","1",[1063,1385,1228],{"class":1155},[1063,1387,1388,1390,1392,1395,1398,1401,1403,1405,1407,1409],{"class":1065,"line":1159},[1063,1389,1104],{"class":1103},[1063,1391,1107],{"class":1069},[1063,1393,1111],{"class":1394},"sP6_D",[1063,1396,1397],{"class":1069},":",[1063,1399,1400],{"class":1110}," posts",[1063,1402,1140],{"class":1069},[1063,1404,1144],{"class":1143},[1063,1406,1148],{"class":1147},[1063,1408,1152],{"class":1151},[1063,1410,1156],{"class":1155},[1063,1412,1413,1415,1418,1420],{"class":1065,"line":1174},[1063,1414,1162],{"class":1087},[1063,1416,1417],{"class":1091},"posts",[1063,1419,1168],{"class":1087},[1063,1421,1171],{"class":1069},[1063,1423,1424,1426,1428,1430,1432,1434,1436,1438,1440,1442,1444,1447,1449,1451],{"class":1065,"line":1225},[1063,1425,1177],{"class":1069},[1063,1427,1181],{"class":1180},[1063,1429,1114],{"class":1069},[1063,1431,1107],{"class":1069},[1063,1433,1188],{"class":1180},[1063,1435,1191],{"class":1069},[1063,1437,1194],{"class":1103},[1063,1439,1197],{"class":1151},[1063,1441,1200],{"class":1155},[1063,1443,1168],{"class":1087},[1063,1445,1446],{"class":1091},"https:\u002F\u002FfakeApi.com\u002Fposts",[1063,1448,1168],{"class":1087},[1063,1450,1114],{"class":1069},[1063,1452,1453],{"class":1069}," {\n",[1063,1455,1456,1460,1462],{"class":1065,"line":1231},[1063,1457,1459],{"class":1458},"sOtFm","    params",[1063,1461,1397],{"class":1069},[1063,1463,1453],{"class":1069},[1063,1465,1467,1470,1472,1474,1477,1480],{"class":1065,"line":1466},7,[1063,1468,1469],{"class":1458},"      page",[1063,1471,1397],{"class":1069},[1063,1473,1372],{"class":1155},[1063,1475,1476],{"class":1069},".",[1063,1478,1479],{"class":1155},"value",[1063,1481,1171],{"class":1069},[1063,1483,1485],{"class":1065,"line":1484},8,[1063,1486,1487],{"class":1069},"    },\n",[1063,1489,1491,1494],{"class":1065,"line":1490},9,[1063,1492,1493],{"class":1155},"    signal",[1063,1495,1171],{"class":1069},[1063,1497,1499,1502,1504,1506],{"class":1065,"line":1498},10,[1063,1500,1501],{"class":1069},"  }",[1063,1503,1220],{"class":1155},[1063,1505,1114],{"class":1069},[1063,1507,1453],{"class":1069},[1063,1509,1511,1514,1516,1519],{"class":1065,"line":1510},11,[1063,1512,1513],{"class":1458},"    watch",[1063,1515,1397],{"class":1069},[1063,1517,1518],{"class":1155}," [page]",[1063,1520,1171],{"class":1069},[1063,1522,1524],{"class":1065,"line":1523},12,[1063,1525,1526],{"class":1069},"  },\n",[1063,1528,1530],{"class":1065,"line":1529},13,[1063,1531,1228],{"class":1155},[1063,1533,1535,1537,1539],{"class":1065,"line":1534},14,[1063,1536,1234],{"class":1069},[1063,1538,1074],{"class":1073},[1063,1540,1097],{"class":1069},[1330,1542,1544],{"id":1543},"响应式-key","响应式 Key",[1024,1546,1547],{},"你可以使用计算 ref、普通 ref 或 getter 函数作为 key，从而实现动态数据获取，并在 key 变化时自动更新：",[1054,1549,1552],{"className":1056,"code":1550,"filename":1551,"language":1059,"meta":354,"style":354},"\u003Cscript setup lang=\"ts\">\nconst route = useRoute()\nconst userId = computed(() => `user-${route.params.id}`)\n\n\u002F\u002F 当路由改变且 userId 更新时，数据会自动重新获取\nconst { data: user } = useAsyncData(\n  userId,\n  () => fetchUserById(route.params.id),\n)\n\u003C\u002Fscript>\n","app\u002Fpages\u002F[id].vue",[1036,1553,1554,1574,1589,1635,1641,1647,1668,1675,1699,1703],{"__ignoreMap":354},[1063,1555,1556,1558,1560,1562,1564,1566,1568,1570,1572],{"class":1065,"line":1066},[1063,1557,1070],{"class":1069},[1063,1559,1074],{"class":1073},[1063,1561,1078],{"class":1077},[1063,1563,1081],{"class":1077},[1063,1565,1084],{"class":1069},[1063,1567,1088],{"class":1087},[1063,1569,1092],{"class":1091},[1063,1571,1088],{"class":1087},[1063,1573,1097],{"class":1069},[1063,1575,1576,1578,1581,1583,1586],{"class":1065,"line":1100},[1063,1577,1104],{"class":1103},[1063,1579,1580],{"class":1110}," route",[1063,1582,1144],{"class":1143},[1063,1584,1585],{"class":1151}," useRoute",[1063,1587,1588],{"class":1155},"()\n",[1063,1590,1591,1593,1596,1598,1601,1603,1606,1608,1611,1614,1617,1620,1622,1625,1627,1630,1633],{"class":1065,"line":1159},[1063,1592,1104],{"class":1103},[1063,1594,1595],{"class":1110}," userId",[1063,1597,1144],{"class":1143},[1063,1599,1600],{"class":1151}," computed",[1063,1602,1200],{"class":1155},[1063,1604,1605],{"class":1069},"()",[1063,1607,1194],{"class":1103},[1063,1609,1610],{"class":1087}," `",[1063,1612,1613],{"class":1091},"user-",[1063,1615,1616],{"class":1087},"${",[1063,1618,1619],{"class":1155},"route",[1063,1621,1476],{"class":1087},[1063,1623,1624],{"class":1155},"params",[1063,1626,1476],{"class":1087},[1063,1628,1629],{"class":1155},"id",[1063,1631,1632],{"class":1087},"}`",[1063,1634,1228],{"class":1155},[1063,1636,1637],{"class":1065,"line":1174},[1063,1638,1640],{"emptyLinePlaceholder":1639},true,"\n",[1063,1642,1643],{"class":1065,"line":1225},[1063,1644,1646],{"class":1645},"sZqJ9","\u002F\u002F 当路由改变且 userId 更新时，数据会自动重新获取\n",[1063,1648,1649,1651,1653,1655,1657,1660,1662,1664,1666],{"class":1065,"line":1231},[1063,1650,1104],{"class":1103},[1063,1652,1107],{"class":1069},[1063,1654,1111],{"class":1394},[1063,1656,1397],{"class":1069},[1063,1658,1659],{"class":1110}," user",[1063,1661,1140],{"class":1069},[1063,1663,1144],{"class":1143},[1063,1665,1152],{"class":1151},[1063,1667,1156],{"class":1155},[1063,1669,1670,1673],{"class":1065,"line":1466},[1063,1671,1672],{"class":1155},"  userId",[1063,1674,1171],{"class":1069},[1063,1676,1677,1680,1682,1685,1688,1690,1692,1694,1697],{"class":1065,"line":1484},[1063,1678,1679],{"class":1069},"  ()",[1063,1681,1194],{"class":1103},[1063,1683,1684],{"class":1151}," fetchUserById",[1063,1686,1687],{"class":1155},"(route",[1063,1689,1476],{"class":1069},[1063,1691,1624],{"class":1155},[1063,1693,1476],{"class":1069},[1063,1695,1696],{"class":1155},"id)",[1063,1698,1171],{"class":1069},[1063,1700,1701],{"class":1065,"line":1490},[1063,1702,1228],{"class":1155},[1063,1704,1705,1707,1709],{"class":1065,"line":1498},[1063,1706,1234],{"class":1069},[1063,1708,1074],{"class":1073},[1063,1710,1097],{"class":1069},[1330,1712,1714,1715,1718],{"id":1713},"使你的-handler-可中止","使你的 ",[1036,1716,1717],{},"handler"," 可中止",[1024,1720,1721,1722,1725,1726,1728,1729,1731],{},"你可以使用第二个参数中提供的 ",[1036,1723,1724],{},"signal"," 让你的 ",[1036,1727,1717],{}," 函数可中止。这在请求不再需要时（例如用户离开页面时）取消请求很有用。",[1036,1730,553],{}," 原生支持中止信号。",[1054,1733,1736],{"className":1734,"code":1735,"filename":1058,"language":1092,"meta":354,"style":354},"language-ts shiki shiki-themes material-theme-lighter github-dark material-theme-palenight","const { data, error } = await useAsyncData(\n  'users',\n  (_nuxtApp, { signal }) => $fetch('\u002Fapi\u002Fusers', { signal }),\n)\n\nrefresh() \u002F\u002F 会取消 $fetch 请求（如果 dedupe: cancel）\nrefresh() \u002F\u002F 会取消 $fetch 请求（如果 dedupe: cancel）\nrefresh()\n\nclear() \u002F\u002F 会取消最新的待处理 handler\n",[1036,1737,1738,1760,1771,1810,1814,1818,1828,1836,1842,1846],{"__ignoreMap":354},[1063,1739,1740,1742,1744,1746,1748,1750,1752,1754,1756,1758],{"class":1065,"line":1066},[1063,1741,1104],{"class":1103},[1063,1743,1107],{"class":1069},[1063,1745,1111],{"class":1110},[1063,1747,1114],{"class":1069},[1063,1749,1127],{"class":1110},[1063,1751,1140],{"class":1069},[1063,1753,1144],{"class":1143},[1063,1755,1148],{"class":1147},[1063,1757,1152],{"class":1151},[1063,1759,1156],{"class":1155},[1063,1761,1762,1764,1767,1769],{"class":1065,"line":1100},[1063,1763,1162],{"class":1087},[1063,1765,1766],{"class":1091},"users",[1063,1768,1168],{"class":1087},[1063,1770,1171],{"class":1069},[1063,1772,1773,1775,1777,1779,1781,1783,1785,1787,1789,1791,1793,1796,1798,1800,1802,1804,1806,1808],{"class":1065,"line":1159},[1063,1774,1177],{"class":1069},[1063,1776,1181],{"class":1180},[1063,1778,1114],{"class":1069},[1063,1780,1107],{"class":1069},[1063,1782,1188],{"class":1180},[1063,1784,1191],{"class":1069},[1063,1786,1194],{"class":1103},[1063,1788,1197],{"class":1151},[1063,1790,1200],{"class":1155},[1063,1792,1168],{"class":1087},[1063,1794,1795],{"class":1091},"\u002Fapi\u002Fusers",[1063,1797,1168],{"class":1087},[1063,1799,1114],{"class":1069},[1063,1801,1107],{"class":1069},[1063,1803,1214],{"class":1155},[1063,1805,1217],{"class":1069},[1063,1807,1220],{"class":1155},[1063,1809,1171],{"class":1069},[1063,1811,1812],{"class":1065,"line":1174},[1063,1813,1228],{"class":1155},[1063,1815,1816],{"class":1065,"line":1225},[1063,1817,1640],{"emptyLinePlaceholder":1639},[1063,1819,1820,1822,1825],{"class":1065,"line":1231},[1063,1821,1320],{"class":1151},[1063,1823,1824],{"class":1155},"() ",[1063,1826,1827],{"class":1645},"\u002F\u002F 会取消 $fetch 请求（如果 dedupe: cancel）\n",[1063,1829,1830,1832,1834],{"class":1065,"line":1466},[1063,1831,1320],{"class":1151},[1063,1833,1824],{"class":1155},[1063,1835,1827],{"class":1645},[1063,1837,1838,1840],{"class":1065,"line":1484},[1063,1839,1320],{"class":1151},[1063,1841,1588],{"class":1155},[1063,1843,1844],{"class":1065,"line":1490},[1063,1845,1640],{"emptyLinePlaceholder":1639},[1063,1847,1848,1850,1852],{"class":1065,"line":1498},[1063,1849,1327],{"class":1151},[1063,1851,1824],{"class":1155},[1063,1853,1854],{"class":1645},"\u002F\u002F 会取消最新的待处理 handler\n",[1024,1856,1857,1858,1321,1860,1862,1863,1866],{},"你也可以向 ",[1036,1859,1320],{},[1036,1861,1324],{}," 函数传入一个 ",[1036,1864,1865],{},"AbortSignal"," 来手动取消单个请求。",[1054,1868,1870],{"className":1734,"code":1869,"filename":1058,"language":1092,"meta":354,"style":354},"const { refresh } = await useAsyncData(\n  'users',\n  (_nuxtApp, { signal }) => $fetch('\u002Fapi\u002Fusers', { signal }),\n)\nlet abortController: AbortController | undefined\n\nfunction handleUserAction () {\n  abortController = new AbortController()\n  refresh({ signal: abortController.signal })\n}\n\nfunction handleCancel () {\n  abortController?.abort() \u002F\u002F 中止正在进行的 refresh 请求\n}\n",[1036,1871,1872,1890,1900,1938,1942,1963,1967,1980,1994,2018,2023,2027,2038,2053],{"__ignoreMap":354},[1063,1873,1874,1876,1878,1880,1882,1884,1886,1888],{"class":1065,"line":1066},[1063,1875,1104],{"class":1103},[1063,1877,1107],{"class":1069},[1063,1879,1132],{"class":1110},[1063,1881,1140],{"class":1069},[1063,1883,1144],{"class":1143},[1063,1885,1148],{"class":1147},[1063,1887,1152],{"class":1151},[1063,1889,1156],{"class":1155},[1063,1891,1892,1894,1896,1898],{"class":1065,"line":1100},[1063,1893,1162],{"class":1087},[1063,1895,1766],{"class":1091},[1063,1897,1168],{"class":1087},[1063,1899,1171],{"class":1069},[1063,1901,1902,1904,1906,1908,1910,1912,1914,1916,1918,1920,1922,1924,1926,1928,1930,1932,1934,1936],{"class":1065,"line":1159},[1063,1903,1177],{"class":1069},[1063,1905,1181],{"class":1180},[1063,1907,1114],{"class":1069},[1063,1909,1107],{"class":1069},[1063,1911,1188],{"class":1180},[1063,1913,1191],{"class":1069},[1063,1915,1194],{"class":1103},[1063,1917,1197],{"class":1151},[1063,1919,1200],{"class":1155},[1063,1921,1168],{"class":1087},[1063,1923,1795],{"class":1091},[1063,1925,1168],{"class":1087},[1063,1927,1114],{"class":1069},[1063,1929,1107],{"class":1069},[1063,1931,1214],{"class":1155},[1063,1933,1217],{"class":1069},[1063,1935,1220],{"class":1155},[1063,1937,1171],{"class":1069},[1063,1939,1940],{"class":1065,"line":1174},[1063,1941,1228],{"class":1155},[1063,1943,1944,1947,1950,1952,1956,1959],{"class":1065,"line":1225},[1063,1945,1946],{"class":1103},"let",[1063,1948,1949],{"class":1155}," abortController",[1063,1951,1397],{"class":1143},[1063,1953,1955],{"class":1954},"sJK67"," AbortController",[1063,1957,1958],{"class":1143}," |",[1063,1960,1962],{"class":1961},"seQRr"," undefined\n",[1063,1964,1965],{"class":1065,"line":1231},[1063,1966,1640],{"emptyLinePlaceholder":1639},[1063,1968,1969,1972,1975,1978],{"class":1065,"line":1466},[1063,1970,1971],{"class":1103},"function",[1063,1973,1974],{"class":1151}," handleUserAction",[1063,1976,1977],{"class":1069}," ()",[1063,1979,1453],{"class":1069},[1063,1981,1982,1985,1987,1990,1992],{"class":1065,"line":1484},[1063,1983,1984],{"class":1155},"  abortController",[1063,1986,1144],{"class":1143},[1063,1988,1989],{"class":1143}," new",[1063,1991,1955],{"class":1151},[1063,1993,1588],{"class":1458},[1063,1995,1996,1999,2001,2004,2006,2008,2010,2012,2014,2016],{"class":1065,"line":1490},[1063,1997,1998],{"class":1151},"  refresh",[1063,2000,1200],{"class":1458},[1063,2002,2003],{"class":1069},"{",[1063,2005,1188],{"class":1458},[1063,2007,1397],{"class":1069},[1063,2009,1949],{"class":1155},[1063,2011,1476],{"class":1069},[1063,2013,1724],{"class":1155},[1063,2015,1140],{"class":1069},[1063,2017,1228],{"class":1458},[1063,2019,2020],{"class":1065,"line":1498},[1063,2021,2022],{"class":1069},"}\n",[1063,2024,2025],{"class":1065,"line":1510},[1063,2026,1640],{"emptyLinePlaceholder":1639},[1063,2028,2029,2031,2034,2036],{"class":1065,"line":1523},[1063,2030,1971],{"class":1103},[1063,2032,2033],{"class":1151}," handleCancel",[1063,2035,1977],{"class":1069},[1063,2037,1453],{"class":1069},[1063,2039,2040,2042,2045,2048,2050],{"class":1065,"line":1529},[1063,2041,1984],{"class":1155},[1063,2043,2044],{"class":1069},"?.",[1063,2046,2047],{"class":1151},"abort",[1063,2049,1824],{"class":1458},[1063,2051,2052],{"class":1645},"\u002F\u002F 中止正在进行的 refresh 请求\n",[1063,2054,2055],{"class":1065,"line":1534},[1063,2056,2022],{"class":1069},[1024,2058,2059,2060,2062,2063,2065],{},"如果你的 ",[1036,2061,1717],{}," 函数不支持中止信号，你可以使用提供的 ",[1036,2064,1724],{}," 实现自己的中止逻辑。",[1054,2067,2069],{"className":1734,"code":2068,"filename":1058,"language":1092,"meta":354,"style":354},"const { data, error } = await useAsyncData(\n  'users',\n  (_nuxtApp, { signal }) => {\n    return new Promise((resolve, reject) => {\n      signal?.addEventListener('abort', () => {\n        reject(new Error('请求已中止'))\n      })\n      return Promise.resolve(callback.call(this, yourHandler)).then(resolve, reject)\n    })\n  },\n)\n",[1036,2070,2071,2093,2103,2121,2149,2175,2200,2207,2257,2264,2268],{"__ignoreMap":354},[1063,2072,2073,2075,2077,2079,2081,2083,2085,2087,2089,2091],{"class":1065,"line":1066},[1063,2074,1104],{"class":1103},[1063,2076,1107],{"class":1069},[1063,2078,1111],{"class":1110},[1063,2080,1114],{"class":1069},[1063,2082,1127],{"class":1110},[1063,2084,1140],{"class":1069},[1063,2086,1144],{"class":1143},[1063,2088,1148],{"class":1147},[1063,2090,1152],{"class":1151},[1063,2092,1156],{"class":1155},[1063,2094,2095,2097,2099,2101],{"class":1065,"line":1100},[1063,2096,1162],{"class":1087},[1063,2098,1766],{"class":1091},[1063,2100,1168],{"class":1087},[1063,2102,1171],{"class":1069},[1063,2104,2105,2107,2109,2111,2113,2115,2117,2119],{"class":1065,"line":1159},[1063,2106,1177],{"class":1069},[1063,2108,1181],{"class":1180},[1063,2110,1114],{"class":1069},[1063,2112,1107],{"class":1069},[1063,2114,1188],{"class":1180},[1063,2116,1191],{"class":1069},[1063,2118,1194],{"class":1103},[1063,2120,1453],{"class":1069},[1063,2122,2123,2126,2128,2131,2133,2135,2138,2140,2143,2145,2147],{"class":1065,"line":1174},[1063,2124,2125],{"class":1147},"    return",[1063,2127,1989],{"class":1143},[1063,2129,2130],{"class":1961}," Promise",[1063,2132,1200],{"class":1458},[1063,2134,1200],{"class":1069},[1063,2136,2137],{"class":1180},"resolve",[1063,2139,1114],{"class":1069},[1063,2141,2142],{"class":1180}," reject",[1063,2144,1220],{"class":1069},[1063,2146,1194],{"class":1103},[1063,2148,1453],{"class":1069},[1063,2150,2151,2154,2156,2159,2161,2163,2165,2167,2169,2171,2173],{"class":1065,"line":1225},[1063,2152,2153],{"class":1155},"      signal",[1063,2155,2044],{"class":1069},[1063,2157,2158],{"class":1151},"addEventListener",[1063,2160,1200],{"class":1458},[1063,2162,1168],{"class":1087},[1063,2164,2047],{"class":1091},[1063,2166,1168],{"class":1087},[1063,2168,1114],{"class":1069},[1063,2170,1977],{"class":1069},[1063,2172,1194],{"class":1103},[1063,2174,1453],{"class":1069},[1063,2176,2177,2180,2182,2185,2188,2190,2192,2195,2197],{"class":1065,"line":1231},[1063,2178,2179],{"class":1151},"        reject",[1063,2181,1200],{"class":1458},[1063,2183,2184],{"class":1143},"new",[1063,2186,2187],{"class":1151}," Error",[1063,2189,1200],{"class":1458},[1063,2191,1168],{"class":1087},[1063,2193,2194],{"class":1091},"请求已中止",[1063,2196,1168],{"class":1087},[1063,2198,2199],{"class":1458},"))\n",[1063,2201,2202,2205],{"class":1065,"line":1466},[1063,2203,2204],{"class":1069},"      }",[1063,2206,1228],{"class":1458},[1063,2208,2209,2212,2214,2216,2218,2220,2223,2225,2228,2230,2234,2236,2239,2242,2244,2247,2249,2251,2253,2255],{"class":1065,"line":1484},[1063,2210,2211],{"class":1147},"      return",[1063,2213,2130],{"class":1961},[1063,2215,1476],{"class":1069},[1063,2217,2137],{"class":1151},[1063,2219,1200],{"class":1458},[1063,2221,2222],{"class":1155},"callback",[1063,2224,1476],{"class":1069},[1063,2226,2227],{"class":1151},"call",[1063,2229,1200],{"class":1458},[1063,2231,2233],{"class":2232},"s0q4w","this",[1063,2235,1114],{"class":1069},[1063,2237,2238],{"class":1155}," yourHandler",[1063,2240,2241],{"class":1458},"))",[1063,2243,1476],{"class":1069},[1063,2245,2246],{"class":1151},"then",[1063,2248,1200],{"class":1458},[1063,2250,2137],{"class":1155},[1063,2252,1114],{"class":1069},[1063,2254,2142],{"class":1155},[1063,2256,1228],{"class":1458},[1063,2258,2259,2262],{"class":1065,"line":1490},[1063,2260,2261],{"class":1069},"    }",[1063,2263,1228],{"class":1458},[1063,2265,2266],{"class":1065,"line":1498},[1063,2267,1526],{"class":1069},[1063,2269,2270],{"class":1065,"line":1510},[1063,2271,1228],{"class":1155},[1024,2273,2274],{},"handler 信号会在以下情况被中止：",[2276,2277,2278,2286,2292],"ul",{},[2279,2280,2281,2282,2285],"li",{},"使用 ",[1036,2283,2284],{},"dedupe: 'cancel'"," 发起新请求时",[2279,2287,2288,2289,2291],{},"调用 ",[1036,2290,1327],{}," 函数时",[2279,2293,2294,2295,2298],{},"超过 ",[1036,2296,2297],{},"options.timeout"," 时长时",[2300,2301],"warning",{},[1024,2303,2304,2308,2309,1048],{},[1033,2305,2306],{"href":440},[1036,2307,441],{}," 是编译器转换的保留函数名，因此你不应该把自己的函数命名为 ",[1033,2310,2311],{"href":440},[1036,2312,441],{},[2314,2315],"read-more",{"to":2316},"\u002Fdocs\u002Fgetting-started\u002Fdata-fetching#useasyncdata",[1050,2318,2319],{"id":2319},"类型",[1054,2321,2324],{"className":1734,"code":2322,"filename":2323,"language":1092,"meta":354,"style":354},"export type AsyncDataHandler\u003CResT> = (nuxtApp: NuxtApp, options: { signal: AbortSignal }) => Promise\u003CResT>\n\nexport function useAsyncData\u003CResT, DataE = unknown, DataT = ResT> (\n  handler: AsyncDataHandler\u003CResT>,\n  options?: AsyncDataOptions\u003CResT, DataT>,\n): AsyncData\u003CDataT, DataE> & Promise\u003CAsyncData\u003CDataT, DataE>>\nexport function useAsyncData\u003CResT, DataE = unknown, DataT = ResT> (\n  key: MaybeRefOrGetter\u003Cstring>,\n  handler: AsyncDataHandler\u003CResT>,\n  options?: AsyncDataOptions\u003CResT, DataT>,\n): AsyncData\u003CDataT, DataE> & Promise\u003CAsyncData\u003CDataT, DataE>>\n\ntype AsyncDataOptions\u003CResT, DataT = ResT> = {\n  server?: boolean\n  lazy?: boolean\n  immediate?: boolean\n  deep?: boolean\n  dedupe?: 'cancel' | 'defer'\n  default?: () => DataT | Ref\u003CDataT>\n  transform?: (input: ResT) => DataT | Promise\u003CDataT>\n  pick?: string[]\n  watch?: MultiWatchSources\n  getCachedData?: (key: string, nuxtApp: NuxtApp, ctx: AsyncDataRequestContext) => DataT | undefined\n  timeout?: number\n  enabled?: MaybeRefOrGetter\u003Cboolean>\n}\n\ntype AsyncDataRequestContext = {\n  \u002F** 该数据请求的原因 *\u002F\n  cause: 'initial' | 'refresh:manual' | 'refresh:hook' | 'watch'\n}\n\ntype AsyncData\u003CDataT, ErrorT> = {\n  data: Ref\u003CDataT | undefined>\n  refresh: (opts?: AsyncDataExecuteOptions) => Promise\u003Cvoid>\n  execute: (opts?: AsyncDataExecuteOptions) => Promise\u003Cvoid>\n  clear: () => void\n  error: Ref\u003CErrorT | undefined>\n  status: Ref\u003CAsyncDataRequestStatus>\n  pending: Ref\u003Cboolean>\n}\n\ninterface AsyncDataExecuteOptions {\n  dedupe?: 'cancel' | 'defer'\n  timeout?: number\n  signal?: AbortSignal\n}\n\ntype AsyncDataRequestStatus = 'idle' | 'pending' | 'success' | 'error'\n","Signature",[1036,2325,2326,2386,2390,2428,2444,2465,2506,2538,2555,2569,2587,2623,2627,2652,2662,2672,2682,2692,2718,2744,2777,2791,2802,2848,2859,2876,2881,2886,2897,2903,2944,2949,2954,2976,2997,3027,3055,3070,3091,3108,3124,3129,3134,3144,3165,3174,3185,3190,3195],{"__ignoreMap":354},[1063,2327,2328,2331,2334,2337,2339,2342,2345,2347,2350,2353,2355,2358,2360,2363,2365,2367,2369,2371,2374,2376,2378,2380,2382,2384],{"class":1065,"line":1066},[1063,2329,2330],{"class":1147},"export",[1063,2332,2333],{"class":1103}," type",[1063,2335,2336],{"class":1954}," AsyncDataHandler",[1063,2338,1070],{"class":1069},[1063,2340,2341],{"class":1954},"ResT",[1063,2343,2344],{"class":1069},">",[1063,2346,1144],{"class":1143},[1063,2348,2349],{"class":1069}," (",[1063,2351,2352],{"class":1180},"nuxtApp",[1063,2354,1397],{"class":1143},[1063,2356,2357],{"class":1954}," NuxtApp",[1063,2359,1114],{"class":1069},[1063,2361,2362],{"class":1180}," options",[1063,2364,1397],{"class":1143},[1063,2366,1107],{"class":1069},[1063,2368,1188],{"class":1394},[1063,2370,1397],{"class":1143},[1063,2372,2373],{"class":1954}," AbortSignal",[1063,2375,1191],{"class":1069},[1063,2377,1194],{"class":1103},[1063,2379,2130],{"class":1954},[1063,2381,1070],{"class":1069},[1063,2383,2341],{"class":1954},[1063,2385,1097],{"class":1069},[1063,2387,2388],{"class":1065,"line":1100},[1063,2389,1640],{"emptyLinePlaceholder":1639},[1063,2391,2392,2394,2397,2399,2401,2403,2405,2408,2410,2413,2415,2418,2420,2423,2425],{"class":1065,"line":1159},[1063,2393,2330],{"class":1147},[1063,2395,2396],{"class":1103}," function",[1063,2398,1152],{"class":1151},[1063,2400,1070],{"class":1069},[1063,2402,2341],{"class":1954},[1063,2404,1114],{"class":1069},[1063,2406,2407],{"class":1954}," DataE",[1063,2409,1144],{"class":1143},[1063,2411,2412],{"class":1961}," unknown",[1063,2414,1114],{"class":1069},[1063,2416,2417],{"class":1954}," DataT",[1063,2419,1144],{"class":1143},[1063,2421,2422],{"class":1954}," ResT",[1063,2424,2344],{"class":1069},[1063,2426,2427],{"class":1069}," (\n",[1063,2429,2430,2433,2435,2437,2439,2441],{"class":1065,"line":1174},[1063,2431,2432],{"class":1180},"  handler",[1063,2434,1397],{"class":1143},[1063,2436,2336],{"class":1954},[1063,2438,1070],{"class":1069},[1063,2440,2341],{"class":1954},[1063,2442,2443],{"class":1069},">,\n",[1063,2445,2446,2449,2452,2455,2457,2459,2461,2463],{"class":1065,"line":1225},[1063,2447,2448],{"class":1180},"  options",[1063,2450,2451],{"class":1143},"?:",[1063,2453,2454],{"class":1954}," AsyncDataOptions",[1063,2456,1070],{"class":1069},[1063,2458,2341],{"class":1954},[1063,2460,1114],{"class":1069},[1063,2462,2417],{"class":1954},[1063,2464,2443],{"class":1069},[1063,2466,2467,2469,2471,2474,2476,2479,2481,2483,2485,2488,2490,2492,2495,2497,2499,2501,2503],{"class":1065,"line":1231},[1063,2468,1220],{"class":1069},[1063,2470,1397],{"class":1143},[1063,2472,2473],{"class":1954}," AsyncData",[1063,2475,1070],{"class":1069},[1063,2477,2478],{"class":1954},"DataT",[1063,2480,1114],{"class":1069},[1063,2482,2407],{"class":1954},[1063,2484,2344],{"class":1069},[1063,2486,2487],{"class":1143}," &",[1063,2489,2130],{"class":1954},[1063,2491,1070],{"class":1069},[1063,2493,2494],{"class":1954},"AsyncData",[1063,2496,1070],{"class":1069},[1063,2498,2478],{"class":1954},[1063,2500,1114],{"class":1069},[1063,2502,2407],{"class":1954},[1063,2504,2505],{"class":1069},">>\n",[1063,2507,2508,2510,2512,2514,2516,2518,2520,2522,2524,2526,2528,2530,2532,2534,2536],{"class":1065,"line":1466},[1063,2509,2330],{"class":1147},[1063,2511,2396],{"class":1103},[1063,2513,1152],{"class":1151},[1063,2515,1070],{"class":1069},[1063,2517,2341],{"class":1954},[1063,2519,1114],{"class":1069},[1063,2521,2407],{"class":1954},[1063,2523,1144],{"class":1143},[1063,2525,2412],{"class":1961},[1063,2527,1114],{"class":1069},[1063,2529,2417],{"class":1954},[1063,2531,1144],{"class":1143},[1063,2533,2422],{"class":1954},[1063,2535,2344],{"class":1069},[1063,2537,2427],{"class":1069},[1063,2539,2540,2543,2545,2548,2550,2553],{"class":1065,"line":1484},[1063,2541,2542],{"class":1180},"  key",[1063,2544,1397],{"class":1143},[1063,2546,2547],{"class":1954}," MaybeRefOrGetter",[1063,2549,1070],{"class":1069},[1063,2551,2552],{"class":1961},"string",[1063,2554,2443],{"class":1069},[1063,2556,2557,2559,2561,2563,2565,2567],{"class":1065,"line":1490},[1063,2558,2432],{"class":1180},[1063,2560,1397],{"class":1143},[1063,2562,2336],{"class":1954},[1063,2564,1070],{"class":1069},[1063,2566,2341],{"class":1954},[1063,2568,2443],{"class":1069},[1063,2570,2571,2573,2575,2577,2579,2581,2583,2585],{"class":1065,"line":1498},[1063,2572,2448],{"class":1180},[1063,2574,2451],{"class":1143},[1063,2576,2454],{"class":1954},[1063,2578,1070],{"class":1069},[1063,2580,2341],{"class":1954},[1063,2582,1114],{"class":1069},[1063,2584,2417],{"class":1954},[1063,2586,2443],{"class":1069},[1063,2588,2589,2591,2593,2595,2597,2599,2601,2603,2605,2607,2609,2611,2613,2615,2617,2619,2621],{"class":1065,"line":1510},[1063,2590,1220],{"class":1069},[1063,2592,1397],{"class":1143},[1063,2594,2473],{"class":1954},[1063,2596,1070],{"class":1069},[1063,2598,2478],{"class":1954},[1063,2600,1114],{"class":1069},[1063,2602,2407],{"class":1954},[1063,2604,2344],{"class":1069},[1063,2606,2487],{"class":1143},[1063,2608,2130],{"class":1954},[1063,2610,1070],{"class":1069},[1063,2612,2494],{"class":1954},[1063,2614,1070],{"class":1069},[1063,2616,2478],{"class":1954},[1063,2618,1114],{"class":1069},[1063,2620,2407],{"class":1954},[1063,2622,2505],{"class":1069},[1063,2624,2625],{"class":1065,"line":1523},[1063,2626,1640],{"emptyLinePlaceholder":1639},[1063,2628,2629,2632,2634,2636,2638,2640,2642,2644,2646,2648,2650],{"class":1065,"line":1529},[1063,2630,2631],{"class":1103},"type",[1063,2633,2454],{"class":1954},[1063,2635,1070],{"class":1069},[1063,2637,2341],{"class":1954},[1063,2639,1114],{"class":1069},[1063,2641,2417],{"class":1954},[1063,2643,1144],{"class":1143},[1063,2645,2422],{"class":1954},[1063,2647,2344],{"class":1069},[1063,2649,1144],{"class":1143},[1063,2651,1453],{"class":1069},[1063,2653,2654,2657,2659],{"class":1065,"line":1534},[1063,2655,2656],{"class":1394},"  server",[1063,2658,2451],{"class":1143},[1063,2660,2661],{"class":1961}," boolean\n",[1063,2663,2665,2668,2670],{"class":1065,"line":2664},15,[1063,2666,2667],{"class":1394},"  lazy",[1063,2669,2451],{"class":1143},[1063,2671,2661],{"class":1961},[1063,2673,2675,2678,2680],{"class":1065,"line":2674},16,[1063,2676,2677],{"class":1394},"  immediate",[1063,2679,2451],{"class":1143},[1063,2681,2661],{"class":1961},[1063,2683,2685,2688,2690],{"class":1065,"line":2684},17,[1063,2686,2687],{"class":1394},"  deep",[1063,2689,2451],{"class":1143},[1063,2691,2661],{"class":1961},[1063,2693,2695,2698,2700,2703,2706,2708,2710,2712,2715],{"class":1065,"line":2694},18,[1063,2696,2697],{"class":1394},"  dedupe",[1063,2699,2451],{"class":1143},[1063,2701,2702],{"class":1087}," '",[1063,2704,2705],{"class":1091},"cancel",[1063,2707,1168],{"class":1087},[1063,2709,1958],{"class":1143},[1063,2711,2702],{"class":1087},[1063,2713,2714],{"class":1091},"defer",[1063,2716,2717],{"class":1087},"'\n",[1063,2719,2721,2725,2727,2729,2731,2733,2735,2738,2740,2742],{"class":1065,"line":2720},19,[1063,2722,2724],{"class":2723},"syA7L","  default",[1063,2726,2451],{"class":1143},[1063,2728,1977],{"class":1069},[1063,2730,1194],{"class":1103},[1063,2732,2417],{"class":1954},[1063,2734,1958],{"class":1143},[1063,2736,2737],{"class":1954}," Ref",[1063,2739,1070],{"class":1069},[1063,2741,2478],{"class":1954},[1063,2743,1097],{"class":1069},[1063,2745,2747,2750,2752,2754,2757,2759,2761,2763,2765,2767,2769,2771,2773,2775],{"class":1065,"line":2746},20,[1063,2748,2749],{"class":2723},"  transform",[1063,2751,2451],{"class":1143},[1063,2753,2349],{"class":1069},[1063,2755,2756],{"class":1180},"input",[1063,2758,1397],{"class":1143},[1063,2760,2422],{"class":1954},[1063,2762,1220],{"class":1069},[1063,2764,1194],{"class":1103},[1063,2766,2417],{"class":1954},[1063,2768,1958],{"class":1143},[1063,2770,2130],{"class":1954},[1063,2772,1070],{"class":1069},[1063,2774,2478],{"class":1954},[1063,2776,1097],{"class":1069},[1063,2778,2780,2783,2785,2788],{"class":1065,"line":2779},21,[1063,2781,2782],{"class":1394},"  pick",[1063,2784,2451],{"class":1143},[1063,2786,2787],{"class":1961}," string",[1063,2789,2790],{"class":1155},"[]\n",[1063,2792,2794,2797,2799],{"class":1065,"line":2793},22,[1063,2795,2796],{"class":1394},"  watch",[1063,2798,2451],{"class":1143},[1063,2800,2801],{"class":1954}," MultiWatchSources\n",[1063,2803,2805,2808,2810,2812,2815,2817,2819,2821,2824,2826,2828,2830,2833,2835,2838,2840,2842,2844,2846],{"class":1065,"line":2804},23,[1063,2806,2807],{"class":2723},"  getCachedData",[1063,2809,2451],{"class":1143},[1063,2811,2349],{"class":1069},[1063,2813,2814],{"class":1180},"key",[1063,2816,1397],{"class":1143},[1063,2818,2787],{"class":1961},[1063,2820,1114],{"class":1069},[1063,2822,2823],{"class":1180}," nuxtApp",[1063,2825,1397],{"class":1143},[1063,2827,2357],{"class":1954},[1063,2829,1114],{"class":1069},[1063,2831,2832],{"class":1180}," ctx",[1063,2834,1397],{"class":1143},[1063,2836,2837],{"class":1954}," AsyncDataRequestContext",[1063,2839,1220],{"class":1069},[1063,2841,1194],{"class":1103},[1063,2843,2417],{"class":1954},[1063,2845,1958],{"class":1143},[1063,2847,1962],{"class":1961},[1063,2849,2851,2854,2856],{"class":1065,"line":2850},24,[1063,2852,2853],{"class":1394},"  timeout",[1063,2855,2451],{"class":1143},[1063,2857,2858],{"class":1961}," number\n",[1063,2860,2862,2865,2867,2869,2871,2874],{"class":1065,"line":2861},25,[1063,2863,2864],{"class":1394},"  enabled",[1063,2866,2451],{"class":1143},[1063,2868,2547],{"class":1954},[1063,2870,1070],{"class":1069},[1063,2872,2873],{"class":1961},"boolean",[1063,2875,1097],{"class":1069},[1063,2877,2879],{"class":1065,"line":2878},26,[1063,2880,2022],{"class":1069},[1063,2882,2884],{"class":1065,"line":2883},27,[1063,2885,1640],{"emptyLinePlaceholder":1639},[1063,2887,2889,2891,2893,2895],{"class":1065,"line":2888},28,[1063,2890,2631],{"class":1103},[1063,2892,2837],{"class":1954},[1063,2894,1144],{"class":1143},[1063,2896,1453],{"class":1069},[1063,2898,2900],{"class":1065,"line":2899},29,[1063,2901,2902],{"class":1645},"  \u002F** 该数据请求的原因 *\u002F\n",[1063,2904,2906,2909,2911,2913,2916,2918,2920,2922,2925,2927,2929,2931,2934,2936,2938,2940,2942],{"class":1065,"line":2905},30,[1063,2907,2908],{"class":1394},"  cause",[1063,2910,1397],{"class":1143},[1063,2912,2702],{"class":1087},[1063,2914,2915],{"class":1091},"initial",[1063,2917,1168],{"class":1087},[1063,2919,1958],{"class":1143},[1063,2921,2702],{"class":1087},[1063,2923,2924],{"class":1091},"refresh:manual",[1063,2926,1168],{"class":1087},[1063,2928,1958],{"class":1143},[1063,2930,2702],{"class":1087},[1063,2932,2933],{"class":1091},"refresh:hook",[1063,2935,1168],{"class":1087},[1063,2937,1958],{"class":1143},[1063,2939,2702],{"class":1087},[1063,2941,1339],{"class":1091},[1063,2943,2717],{"class":1087},[1063,2945,2947],{"class":1065,"line":2946},31,[1063,2948,2022],{"class":1069},[1063,2950,2952],{"class":1065,"line":2951},32,[1063,2953,1640],{"emptyLinePlaceholder":1639},[1063,2955,2957,2959,2961,2963,2965,2967,2970,2972,2974],{"class":1065,"line":2956},33,[1063,2958,2631],{"class":1103},[1063,2960,2473],{"class":1954},[1063,2962,1070],{"class":1069},[1063,2964,2478],{"class":1954},[1063,2966,1114],{"class":1069},[1063,2968,2969],{"class":1954}," ErrorT",[1063,2971,2344],{"class":1069},[1063,2973,1144],{"class":1143},[1063,2975,1453],{"class":1069},[1063,2977,2979,2982,2984,2986,2988,2990,2992,2995],{"class":1065,"line":2978},34,[1063,2980,2981],{"class":1394},"  data",[1063,2983,1397],{"class":1143},[1063,2985,2737],{"class":1954},[1063,2987,1070],{"class":1069},[1063,2989,2478],{"class":1954},[1063,2991,1958],{"class":1143},[1063,2993,2994],{"class":1961}," undefined",[1063,2996,1097],{"class":1069},[1063,2998,3000,3002,3004,3006,3009,3011,3014,3016,3018,3020,3022,3025],{"class":1065,"line":2999},35,[1063,3001,1998],{"class":2723},[1063,3003,1397],{"class":1143},[1063,3005,2349],{"class":1069},[1063,3007,3008],{"class":1180},"opts",[1063,3010,2451],{"class":1143},[1063,3012,3013],{"class":1954}," AsyncDataExecuteOptions",[1063,3015,1220],{"class":1069},[1063,3017,1194],{"class":1103},[1063,3019,2130],{"class":1954},[1063,3021,1070],{"class":1069},[1063,3023,3024],{"class":1961},"void",[1063,3026,1097],{"class":1069},[1063,3028,3030,3033,3035,3037,3039,3041,3043,3045,3047,3049,3051,3053],{"class":1065,"line":3029},36,[1063,3031,3032],{"class":2723},"  execute",[1063,3034,1397],{"class":1143},[1063,3036,2349],{"class":1069},[1063,3038,3008],{"class":1180},[1063,3040,2451],{"class":1143},[1063,3042,3013],{"class":1954},[1063,3044,1220],{"class":1069},[1063,3046,1194],{"class":1103},[1063,3048,2130],{"class":1954},[1063,3050,1070],{"class":1069},[1063,3052,3024],{"class":1961},[1063,3054,1097],{"class":1069},[1063,3056,3058,3061,3063,3065,3067],{"class":1065,"line":3057},37,[1063,3059,3060],{"class":2723},"  clear",[1063,3062,1397],{"class":1143},[1063,3064,1977],{"class":1069},[1063,3066,1194],{"class":1103},[1063,3068,3069],{"class":1961}," void\n",[1063,3071,3073,3076,3078,3080,3082,3085,3087,3089],{"class":1065,"line":3072},38,[1063,3074,3075],{"class":1394},"  error",[1063,3077,1397],{"class":1143},[1063,3079,2737],{"class":1954},[1063,3081,1070],{"class":1069},[1063,3083,3084],{"class":1954},"ErrorT",[1063,3086,1958],{"class":1143},[1063,3088,2994],{"class":1961},[1063,3090,1097],{"class":1069},[1063,3092,3094,3097,3099,3101,3103,3106],{"class":1065,"line":3093},39,[1063,3095,3096],{"class":1394},"  status",[1063,3098,1397],{"class":1143},[1063,3100,2737],{"class":1954},[1063,3102,1070],{"class":1069},[1063,3104,3105],{"class":1954},"AsyncDataRequestStatus",[1063,3107,1097],{"class":1069},[1063,3109,3111,3114,3116,3118,3120,3122],{"class":1065,"line":3110},40,[1063,3112,3113],{"class":1394},"  pending",[1063,3115,1397],{"class":1143},[1063,3117,2737],{"class":1954},[1063,3119,1070],{"class":1069},[1063,3121,2873],{"class":1961},[1063,3123,1097],{"class":1069},[1063,3125,3127],{"class":1065,"line":3126},41,[1063,3128,2022],{"class":1069},[1063,3130,3132],{"class":1065,"line":3131},42,[1063,3133,1640],{"emptyLinePlaceholder":1639},[1063,3135,3137,3140,3142],{"class":1065,"line":3136},43,[1063,3138,3139],{"class":1103},"interface",[1063,3141,3013],{"class":1954},[1063,3143,1453],{"class":1069},[1063,3145,3147,3149,3151,3153,3155,3157,3159,3161,3163],{"class":1065,"line":3146},44,[1063,3148,2697],{"class":1394},[1063,3150,2451],{"class":1143},[1063,3152,2702],{"class":1087},[1063,3154,2705],{"class":1091},[1063,3156,1168],{"class":1087},[1063,3158,1958],{"class":1143},[1063,3160,2702],{"class":1087},[1063,3162,2714],{"class":1091},[1063,3164,2717],{"class":1087},[1063,3166,3168,3170,3172],{"class":1065,"line":3167},45,[1063,3169,2853],{"class":1394},[1063,3171,2451],{"class":1143},[1063,3173,2858],{"class":1961},[1063,3175,3177,3180,3182],{"class":1065,"line":3176},46,[1063,3178,3179],{"class":1394},"  signal",[1063,3181,2451],{"class":1143},[1063,3183,3184],{"class":1954}," AbortSignal\n",[1063,3186,3188],{"class":1065,"line":3187},47,[1063,3189,2022],{"class":1069},[1063,3191,3193],{"class":1065,"line":3192},48,[1063,3194,1640],{"emptyLinePlaceholder":1639},[1063,3196,3198,3200,3203,3205,3207,3210,3212,3214,3216,3218,3220,3222,3224,3227,3229,3231,3233,3235],{"class":1065,"line":3197},49,[1063,3199,2631],{"class":1103},[1063,3201,3202],{"class":1954}," AsyncDataRequestStatus",[1063,3204,1144],{"class":1143},[1063,3206,2702],{"class":1087},[1063,3208,3209],{"class":1091},"idle",[1063,3211,1168],{"class":1087},[1063,3213,1958],{"class":1143},[1063,3215,2702],{"class":1087},[1063,3217,1306],{"class":1091},[1063,3219,1168],{"class":1087},[1063,3221,1958],{"class":1143},[1063,3223,2702],{"class":1087},[1063,3225,3226],{"class":1091},"success",[1063,3228,1168],{"class":1087},[1063,3230,1958],{"class":1143},[1063,3232,2702],{"class":1087},[1063,3234,1283],{"class":1091},[1063,3236,2717],{"class":1087},[2314,3238],{"to":41},[1050,3240,3241],{"id":3241},"参数",[2276,3243,3244,3252],{},[2279,3245,3246,3248,3249,3251],{},[1036,3247,2814],{},"：一个唯一的 key，确保数据获取能够在多个请求之间正确去重。如果你不提供 key，则会为你生成一个对 ",[1036,3250,441],{}," 实例的文件名和行号唯一的 key。",[2279,3253,3254,3256,3257,3260,3261,3264],{},[1036,3255,1717],{},"：一个必须返回真值（例如，不应为 ",[1036,3258,3259],{},"undefined"," 或 ",[1036,3262,3263],{},"null","）的异步函数，否则请求可能会在客户端被重复。",[2300,3266],{},[1024,3268,3269,3271,3272,3275,3276,3280],{},[1036,3270,1717],{}," 函数应该是",[1045,3273,3274],{},"无副作用","的，以确保在 SSR 和 CSR hydration 期间行为可预测。如果你需要触发副作用，请使用 ",[1033,3277,3278],{"href":564},[1036,3279,565],{}," 工具来实现。\n:",[2276,3282,3283],{},[2279,3284,3285,3288,3289,3292],{},[1036,3286,3287],{},"options","（对象）：异步函数调用的配置。所有选项可以是静态值、",[1036,3290,3291],{},"ref"," 或计算值。",[3294,3295,3296,3314],"table",{},[3297,3298,3299],"thead",{},[3300,3301,3302,3306,3308,3311],"tr",{},[3303,3304,3305],"th",{},"选项",[3303,3307,2319],{},[3303,3309,3310],{},"默认值",[3303,3312,3313],{},"描述",[3315,3316,3317,3336,3354,3372,3393,3421,3438,3459,3476,3492,3516,3540],"tbody",{},[3300,3318,3319,3324,3328,3333],{},[3320,3321,3322],"td",{},[1036,3323,150],{},[3320,3325,3326],{},[1036,3327,2873],{},[3320,3329,3330],{},[1036,3331,3332],{},"true",[3320,3334,3335],{},"是否在服务端调用该函数。",[3300,3337,3338,3342,3346,3351],{},[3320,3339,3340],{},[1036,3341,1290],{},[3320,3343,3344],{},[1036,3345,2873],{},[3320,3347,3348],{},[1036,3349,3350],{},"false",[3320,3352,3353],{},"如果为 true，则在路由加载后解析（不阻塞导航）。",[3300,3355,3356,3361,3365,3369],{},[3320,3357,3358],{},[1036,3359,3360],{},"immediate",[3320,3362,3363],{},[1036,3364,2873],{},[3320,3366,3367],{},[1036,3368,3332],{},[3320,3370,3371],{},"如果为 false，则阻止函数被立即调用。",[3300,3373,3374,3379,3384,3387],{},[3320,3375,3376],{},[1036,3377,3378],{},"default",[3320,3380,3381],{},[1036,3382,3383],{},"() => DataT",[3320,3385,3386],{},"-",[3320,3388,3389,3390,3392],{},"在 async 解析之前 ",[1036,3391,1272],{}," 默认值的工厂函数。",[3300,3394,3395,3408,3413,3415],{},[3320,3396,3397,1263,3400],{},[1036,3398,3399],{},"timeout",[3401,3402,3407],"badge",{"className":3403,"color":3405,"size":3406},[3404],"align-middle","info","xs","v4.2",[3320,3409,3410],{},[1036,3411,3412],{},"number",[3320,3414,3386],{},[3320,3416,3417,3418,3420],{},"在调用超时前等待的毫秒数（默认为 ",[1036,3419,3259],{},"，表示不超时）",[3300,3422,3423,3428,3433,3435],{},[3320,3424,3425],{},[1036,3426,3427],{},"transform",[3320,3429,3430],{},[1036,3431,3432],{},"(input: DataT) => DataT | Promise\u003CDataT>",[3320,3434,3386],{},[3320,3436,3437],{},"解析后转换结果的函数。",[3300,3439,3440,3449,3454,3456],{},[3320,3441,3442,1263,3445],{},[1036,3443,3444],{},"getCachedData",[3401,3446,3448],{"className":3447,"color":3405,"size":3406},[3404],"v3.8",[3320,3450,3451],{},[1036,3452,3453],{},"(key, nuxtApp, ctx) => DataT | undefined",[3320,3455,3386],{},[3320,3457,3458],{},"返回缓存数据的函数。默认实现见下文。",[3300,3460,3461,3466,3471,3473],{},[3320,3462,3463],{},[1036,3464,3465],{},"pick",[3320,3467,3468],{},[1036,3469,3470],{},"string[]",[3320,3472,3386],{},[3320,3474,3475],{},"仅从结果中挑选指定的 key。",[3300,3477,3478,3482,3487,3489],{},[3320,3479,3480],{},[1036,3481,1339],{},[3320,3483,3484],{},[1036,3485,3486],{},"MultiWatchSources",[3320,3488,3386],{},[3320,3490,3491],{},"要监视并自动刷新的响应式源数组。",[3300,3493,3494,3502,3506,3510],{},[3320,3495,3496,1263,3499],{},[1036,3497,3498],{},"deep",[3401,3500,3448],{"className":3501,"color":3405,"size":3406},[3404],[3320,3503,3504],{},[1036,3505,2873],{},[3320,3507,3508],{},[1036,3509,3350],{},[3320,3511,3512,3513,3515],{},"以深层 ref 对象形式返回数据。默认为 ",[1036,3514,3350],{}," 以获得更好性能（浅层 ref 对象）。",[3300,3517,3518,3527,3532,3537],{},[3320,3519,3520,1263,3523],{},[1036,3521,3522],{},"dedupe",[3401,3524,3526],{"className":3525,"color":3405,"size":3406},[3404],"v3.9",[3320,3528,3529],{},[1036,3530,3531],{},"'cancel' | 'defer'",[3320,3533,3534],{},[1036,3535,3536],{},"'cancel'",[3320,3538,3539],{},"一次触发多次执行时的策略。",[3300,3541,3542,3551,3555,3559],{},[3320,3543,3544,1263,3547],{},[1036,3545,3546],{},"enabled",[3401,3548,3550],{"className":3549,"color":3405,"size":3406},[3404],"v4.5",[3320,3552,3553],{},[1036,3554,2873],{},[3320,3556,3557],{},[1036,3558,3332],{},[3320,3560,3561,3562,3564,3565,3567,3568,1321,3570,3572,3573,3575,3576,3578,3579,3581],{},"控制 ",[1036,3563,1717],{}," 是否可以运行的屏障。为 ",[1036,3566,3350],{}," 时，每次执行都会被阻塞（初始获取、",[1036,3569,1324],{},[1036,3571,1320],{}," 和 watch 触发），且从 ",[1036,3574,3332],{}," → ",[1036,3577,3350],{}," 切换会取消任何进行中的请求而不清除 ",[1036,3580,1272],{},"。重新启用不会自行重新获取。",[1028,3583],{},[1024,3585,3586,3587,3260,3590,3592],{},"所有选项都可以给定 ",[1036,3588,3589],{},"computed",[1036,3591,3291],{}," 值。它们会被监视，并在更新时自动发起新请求。\n:",[1024,3594,3595],{},[1045,3596,3597],{},"getCachedData 默认值：",[1054,3599,3602],{"className":1734,"code":3600,"filename":3601,"language":1092,"meta":354,"style":354},"const getDefaultCachedData = (key, nuxtApp, ctx) => nuxtApp.isHydrating\n  ? nuxtApp.payload.data[key]\n  : nuxtApp.static.data[key]\n","Default getCachedData Implementation",[1036,3603,3604,3637,3654],{"__ignoreMap":354},[1063,3605,3606,3608,3612,3614,3616,3618,3620,3622,3624,3626,3628,3630,3632,3634],{"class":1065,"line":1066},[1063,3607,1104],{"class":1103},[1063,3609,3611],{"class":3610},"s5Y2e"," getDefaultCachedData",[1063,3613,1144],{"class":1143},[1063,3615,2349],{"class":1069},[1063,3617,2814],{"class":1180},[1063,3619,1114],{"class":1069},[1063,3621,2823],{"class":1180},[1063,3623,1114],{"class":1069},[1063,3625,2832],{"class":1180},[1063,3627,1220],{"class":1069},[1063,3629,1194],{"class":1103},[1063,3631,2823],{"class":1155},[1063,3633,1476],{"class":1069},[1063,3635,3636],{"class":1155},"isHydrating\n",[1063,3638,3639,3642,3644,3646,3649,3651],{"class":1065,"line":1100},[1063,3640,3641],{"class":1143},"  ?",[1063,3643,2823],{"class":1155},[1063,3645,1476],{"class":1069},[1063,3647,3648],{"class":1155},"payload",[1063,3650,1476],{"class":1069},[1063,3652,3653],{"class":1155},"data[key]\n",[1063,3655,3656,3659,3661,3663,3666,3668],{"class":1065,"line":1159},[1063,3657,3658],{"class":1143},"  :",[1063,3660,2823],{"class":1155},[1063,3662,1476],{"class":1069},[1063,3664,3665],{"class":1155},"static",[1063,3667,1476],{"class":1069},[1063,3669,3653],{"class":1155},[1024,3671,3672,3673,3676,3677,3680],{},"这仅在 ",[1036,3674,3675],{},"nuxt.config"," 中启用了 ",[1036,3678,3679],{},"experimental.payloadExtraction"," 时才会缓存数据。",[1028,3682],{},[1024,3684,3685,3686,3689,3690,3693,3694,3697],{},"在底层，",[1036,3687,3688],{},"lazy: false"," 使用 ",[1036,3691,3692],{},"\u003CSuspense>"," 在获取完数据之前阻塞路由的加载。为了更灵敏的用户体验，请考虑改用 ",[1036,3695,3696],{},"lazy: true"," 并实现加载状态。\n:",[2314,3699],{"to":472},[1024,3701,3702,3703,3705,3706,3708,3709,3711],{},"你可以使用 ",[1036,3704,473],{}," 来获得与 ",[1036,3707,441],{}," 中 ",[1036,3710,3696],{}," 相同的行为。\n:",[3713,3714],"video-accordion",{"title":3715,"video-id":3716},"观看 Alexander Lichter 关于使用 getCachedData 进行客户端缓存的视频","aQPR0xn-MMk",[1330,3718,3719],{"id":3719},"共享状态与选项一致性",[1024,3721,3722,3723,3725,3726,1301,3728,1301,3730,1280,3732,3734],{},"当多个 ",[1036,3724,441],{}," 调用使用相同的 key 时，它们共享相同的 ",[1036,3727,1272],{},[1036,3729,1283],{},[1036,3731,1279],{},[1036,3733,1306],{}," ref。请保持下列选项在这些调用之间一致。",[1024,3736,3737,3738,3741],{},"以下选项",[1045,3739,3740],{},"必须一致","（所有使用相同 key 的调用）：",[2276,3743,3744,3749,3754,3758,3763,3767],{},[2279,3745,3746,3748],{},[1036,3747,1717],{}," 函数",[2279,3750,3751,3753],{},[1036,3752,3498],{}," 选项",[2279,3755,3756,3748],{},[1036,3757,3427],{},[2279,3759,3760,3762],{},[1036,3761,3465],{}," 数组",[2279,3764,3765,3748],{},[1036,3766,3444],{},[2279,3768,3769,3771],{},[1036,3770,3378],{}," 值",[1024,3773,3737,3774,3777],{},[1045,3775,3776],{},"可以不同","（不会触发警告）：",[2276,3779,3780,3784,3788,3792,3796,3800],{},[2279,3781,3782],{},[1036,3783,150],{},[2279,3785,3786],{},[1036,3787,1290],{},[2279,3789,3790],{},[1036,3791,3360],{},[2279,3793,3794],{},[1036,3795,3522],{},[2279,3797,3798],{},[1036,3799,1339],{},[2279,3801,3802],{},[1036,3803,3546],{},[1054,3805,3807],{"className":1734,"code":3806,"filename":1058,"language":1092,"meta":354,"style":354},"\u002F\u002F ❌ 这会触发一个开发警告\nconst { data: users1 } = useAsyncData('users', (_nuxtApp, { signal }) => $fetch('\u002Fapi\u002Fusers', { signal }), { deep: false })\nconst { data: users2 } = useAsyncData('users', (_nuxtApp, { signal }) => $fetch('\u002Fapi\u002Fusers', { signal }), { deep: true })\n\n\u002F\u002F ✅ 这是允许的\nconst { data: users1 } = useAsyncData('users', (_nuxtApp, { signal }) => $fetch('\u002Fapi\u002Fusers', { signal }), { immediate: true })\nconst { data: users2 } = useAsyncData('users', (_nuxtApp, { signal }) => $fetch('\u002Fapi\u002Fusers', { signal }), { immediate: false })\n",[1036,3808,3809,3814,3894,3972,3976,3981,4058],{"__ignoreMap":354},[1063,3810,3811],{"class":1065,"line":1066},[1063,3812,3813],{"class":1645},"\u002F\u002F ❌ 这会触发一个开发警告\n",[1063,3815,3816,3818,3820,3822,3824,3827,3829,3831,3833,3835,3837,3839,3841,3843,3845,3847,3849,3851,3853,3855,3857,3859,3861,3863,3865,3867,3869,3871,3873,3875,3877,3879,3881,3884,3886,3890,3892],{"class":1065,"line":1100},[1063,3817,1104],{"class":1103},[1063,3819,1107],{"class":1069},[1063,3821,1111],{"class":1394},[1063,3823,1397],{"class":1069},[1063,3825,3826],{"class":1110}," users1",[1063,3828,1140],{"class":1069},[1063,3830,1144],{"class":1143},[1063,3832,1152],{"class":1151},[1063,3834,1200],{"class":1155},[1063,3836,1168],{"class":1087},[1063,3838,1766],{"class":1091},[1063,3840,1168],{"class":1087},[1063,3842,1114],{"class":1069},[1063,3844,2349],{"class":1069},[1063,3846,1181],{"class":1180},[1063,3848,1114],{"class":1069},[1063,3850,1107],{"class":1069},[1063,3852,1188],{"class":1180},[1063,3854,1191],{"class":1069},[1063,3856,1194],{"class":1103},[1063,3858,1197],{"class":1151},[1063,3860,1200],{"class":1155},[1063,3862,1168],{"class":1087},[1063,3864,1795],{"class":1091},[1063,3866,1168],{"class":1087},[1063,3868,1114],{"class":1069},[1063,3870,1107],{"class":1069},[1063,3872,1214],{"class":1155},[1063,3874,1217],{"class":1069},[1063,3876,1220],{"class":1155},[1063,3878,1114],{"class":1069},[1063,3880,1107],{"class":1069},[1063,3882,3883],{"class":1458}," deep",[1063,3885,1397],{"class":1069},[1063,3887,3889],{"class":3888},"si1Qm"," false",[1063,3891,1140],{"class":1069},[1063,3893,1228],{"class":1155},[1063,3895,3896,3898,3900,3902,3904,3907,3909,3911,3913,3915,3917,3919,3921,3923,3925,3927,3929,3931,3933,3935,3937,3939,3941,3943,3945,3947,3949,3951,3953,3955,3957,3959,3961,3963,3965,3968,3970],{"class":1065,"line":1159},[1063,3897,1104],{"class":1103},[1063,3899,1107],{"class":1069},[1063,3901,1111],{"class":1394},[1063,3903,1397],{"class":1069},[1063,3905,3906],{"class":1110}," users2",[1063,3908,1140],{"class":1069},[1063,3910,1144],{"class":1143},[1063,3912,1152],{"class":1151},[1063,3914,1200],{"class":1155},[1063,3916,1168],{"class":1087},[1063,3918,1766],{"class":1091},[1063,3920,1168],{"class":1087},[1063,3922,1114],{"class":1069},[1063,3924,2349],{"class":1069},[1063,3926,1181],{"class":1180},[1063,3928,1114],{"class":1069},[1063,3930,1107],{"class":1069},[1063,3932,1188],{"class":1180},[1063,3934,1191],{"class":1069},[1063,3936,1194],{"class":1103},[1063,3938,1197],{"class":1151},[1063,3940,1200],{"class":1155},[1063,3942,1168],{"class":1087},[1063,3944,1795],{"class":1091},[1063,3946,1168],{"class":1087},[1063,3948,1114],{"class":1069},[1063,3950,1107],{"class":1069},[1063,3952,1214],{"class":1155},[1063,3954,1217],{"class":1069},[1063,3956,1220],{"class":1155},[1063,3958,1114],{"class":1069},[1063,3960,1107],{"class":1069},[1063,3962,3883],{"class":1458},[1063,3964,1397],{"class":1069},[1063,3966,3967],{"class":3888}," true",[1063,3969,1140],{"class":1069},[1063,3971,1228],{"class":1155},[1063,3973,3974],{"class":1065,"line":1174},[1063,3975,1640],{"emptyLinePlaceholder":1639},[1063,3977,3978],{"class":1065,"line":1225},[1063,3979,3980],{"class":1645},"\u002F\u002F ✅ 这是允许的\n",[1063,3982,3983,3985,3987,3989,3991,3993,3995,3997,3999,4001,4003,4005,4007,4009,4011,4013,4015,4017,4019,4021,4023,4025,4027,4029,4031,4033,4035,4037,4039,4041,4043,4045,4047,4050,4052,4054,4056],{"class":1065,"line":1231},[1063,3984,1104],{"class":1103},[1063,3986,1107],{"class":1069},[1063,3988,1111],{"class":1394},[1063,3990,1397],{"class":1069},[1063,3992,3826],{"class":1110},[1063,3994,1140],{"class":1069},[1063,3996,1144],{"class":1143},[1063,3998,1152],{"class":1151},[1063,4000,1200],{"class":1155},[1063,4002,1168],{"class":1087},[1063,4004,1766],{"class":1091},[1063,4006,1168],{"class":1087},[1063,4008,1114],{"class":1069},[1063,4010,2349],{"class":1069},[1063,4012,1181],{"class":1180},[1063,4014,1114],{"class":1069},[1063,4016,1107],{"class":1069},[1063,4018,1188],{"class":1180},[1063,4020,1191],{"class":1069},[1063,4022,1194],{"class":1103},[1063,4024,1197],{"class":1151},[1063,4026,1200],{"class":1155},[1063,4028,1168],{"class":1087},[1063,4030,1795],{"class":1091},[1063,4032,1168],{"class":1087},[1063,4034,1114],{"class":1069},[1063,4036,1107],{"class":1069},[1063,4038,1214],{"class":1155},[1063,4040,1217],{"class":1069},[1063,4042,1220],{"class":1155},[1063,4044,1114],{"class":1069},[1063,4046,1107],{"class":1069},[1063,4048,4049],{"class":1458}," immediate",[1063,4051,1397],{"class":1069},[1063,4053,3967],{"class":3888},[1063,4055,1140],{"class":1069},[1063,4057,1228],{"class":1155},[1063,4059,4060,4062,4064,4066,4068,4070,4072,4074,4076,4078,4080,4082,4084,4086,4088,4090,4092,4094,4096,4098,4100,4102,4104,4106,4108,4110,4112,4114,4116,4118,4120,4122,4124,4126,4128,4130,4132],{"class":1065,"line":1466},[1063,4061,1104],{"class":1103},[1063,4063,1107],{"class":1069},[1063,4065,1111],{"class":1394},[1063,4067,1397],{"class":1069},[1063,4069,3906],{"class":1110},[1063,4071,1140],{"class":1069},[1063,4073,1144],{"class":1143},[1063,4075,1152],{"class":1151},[1063,4077,1200],{"class":1155},[1063,4079,1168],{"class":1087},[1063,4081,1766],{"class":1091},[1063,4083,1168],{"class":1087},[1063,4085,1114],{"class":1069},[1063,4087,2349],{"class":1069},[1063,4089,1181],{"class":1180},[1063,4091,1114],{"class":1069},[1063,4093,1107],{"class":1069},[1063,4095,1188],{"class":1180},[1063,4097,1191],{"class":1069},[1063,4099,1194],{"class":1103},[1063,4101,1197],{"class":1151},[1063,4103,1200],{"class":1155},[1063,4105,1168],{"class":1087},[1063,4107,1795],{"class":1091},[1063,4109,1168],{"class":1087},[1063,4111,1114],{"class":1069},[1063,4113,1107],{"class":1069},[1063,4115,1214],{"class":1155},[1063,4117,1217],{"class":1069},[1063,4119,1220],{"class":1155},[1063,4121,1114],{"class":1069},[1063,4123,1107],{"class":1069},[1063,4125,4049],{"class":1458},[1063,4127,1397],{"class":1069},[1063,4129,3889],{"class":3888},[1063,4131,1140],{"class":1069},[1063,4133,1228],{"class":1155},[1240,4135],{},[1024,4137,2281,4138,4140,4141,4145],{},[1036,4139,441],{}," 创建的 keyed 状态可以通过 ",[1033,4142,4143],{"href":488},[1036,4144,489],{}," 在你的 Nuxt 应用中获取。\n:",[1050,4147,4148],{"id":4148},"返回值",[1024,4150,4151,4152,4155,4156,4158,4159,4161,4162,4164,4165,4167],{},"该组合式函数返回一个可以 await 的 ",[1036,4153,4154],{},"Promise","，这使得可以在 ",[1036,4157,1312],{}," 中直接使用 ",[1036,4160,1272],{},"（即会有一个值存在，而不是 undefined）。你也可以在不 await 返回值的情况下直接解构这些值，这种情况下直到获取完成之前 ",[1036,4163,1272],{}," 在 ",[1036,4166,1312],{}," 中可能为 undefined。",[1240,4169],{},[1024,4171,4172],{},"即使你不 await 返回值，在 SSR 期间 Nuxt 也会等待请求完成并将解析后的数据发送到客户端。\n:",[1028,4174],{},[1024,4176,4177,4178,4181,4182,4185,4186,4190,4191,4164,4193,4195,4196,1048],{},"如果你没有在服务端获取数据（例如使用 ",[1036,4179,4180],{},"server: false","），那么数据在 hydration 完成之前",[1045,4183,4184],{},"不会","被获取。这意味着即使在客户端 await ",[1033,4187,4188],{"href":440},[1036,4189,441],{},"，",[1036,4192,1272],{},[1036,4194,1312],{}," 中也会保持 ",[1036,4197,3259],{},[3294,4199,4200,4211],{},[3297,4201,4202],{},[3300,4203,4204,4207,4209],{},[3303,4205,4206],{},"名称",[3303,4208,2319],{},[3303,4210,3313],{},[3315,4212,4213,4227,4244,4259,4273,4296,4328],{},[3300,4214,4215,4219,4224],{},[3320,4216,4217],{},[1036,4218,1272],{},[3320,4220,4221],{},[1036,4222,4223],{},"Ref\u003CDataT | undefined>",[3320,4225,4226],{},"传入的异步函数的结果。",[3300,4228,4229,4233,4238],{},[3320,4230,4231],{},[1036,4232,1320],{},[3320,4234,4235],{},[1036,4236,4237],{},"(opts?: AsyncDataExecuteOptions) => Promise\u003Cvoid>",[3320,4239,4240,4241,4243],{},"手动刷新数据的函数。默认情况下，Nuxt 会等待一次 ",[1036,4242,1320],{}," 完成之后才能再次执行。",[3300,4245,4246,4250,4254],{},[3320,4247,4248],{},[1036,4249,1324],{},[3320,4251,4252],{},[1036,4253,4237],{},[3320,4255,4256,4258],{},[1036,4257,1320],{}," 的别名。",[3300,4260,4261,4265,4270],{},[3320,4262,4263],{},[1036,4264,1283],{},[3320,4266,4267],{},[1036,4268,4269],{},"Ref\u003CErrorT | undefined>",[3320,4271,4272],{},"如果异步函数抛出错误时的错误对象。",[3300,4274,4275,4279,4284],{},[3320,4276,4277],{},[1036,4278,1279],{},[3320,4280,4281],{},[1036,4282,4283],{},"Ref\u003C'idle' | 'pending' | 'success' | 'error'>",[3320,4285,4286,4287,1301,4289,1301,4291,1280,4293,4295],{},"异步函数调用的状态。用它来区分 ",[1036,4288,3209],{},[1036,4290,1306],{},[1036,4292,3226],{},[1036,4294,1283],{},"。",[3300,4297,4298,4302,4307],{},[3320,4299,4300],{},[1036,4301,1306],{},[3320,4303,4304],{},[1036,4305,4306],{},"Ref\u003Cboolean>",[3320,4308,4309,4310,4312,4313,4319,4320,4322,4323,4325,4326,4295],{},"请求进行中为 ",[1036,4311,3332],{},"。配合 ",[1033,4314,4316],{"href":4315},"\u002Fdocs\u002Fguide\u002Fgoing-further\u002Fexperimental-features#pendingwhenidle",[1036,4317,4318],{},"experimental.pendingWhenIdle","，当 ",[1036,4321,1279],{}," 为 ",[1036,4324,3209],{}," 且没有可用缓存数据时也为 ",[1036,4327,3332],{},[3300,4329,4330,4334,4339],{},[3320,4331,4332],{},[1036,4333,1327],{},[3320,4335,4336],{},[1036,4337,4338],{},"() => void",[3320,4340,4341,4342,4344,4345,4347,4348,4351,4352,4344,4354,4356,4357,4359,4360,4362],{},"将 ",[1036,4343,1272],{}," 重置为 ",[1036,4346,3259],{},"（或提供了 ",[1036,4349,4350],{},"options.default()"," 时为其值），",[1036,4353,1283],{},[1036,4355,3259],{},"，将 ",[1036,4358,1279],{}," 设为 ",[1036,4361,3209],{},"，并取消任何挂起的调用。",[1240,4364],{},[1024,4366,4367,4368,4370,4371,1301,4373,1280,4376,4379],{},"如果你没有 await 返回值，来自 ",[1036,4369,4154],{}," 的函数（",[1036,4372,2246],{},[1036,4374,4375],{},"catch",[1036,4377,4378],{},"finally","）可以被安全解构。\n:",[1330,4381,4382],{"id":4382},"状态值",[2276,4384,4385,4398,4403,4408],{},[2279,4386,4387,4389,4390,4393,4394,4397],{},[1036,4388,3209],{},"：函数尚未被调用（例如 ",[1036,4391,4392],{},"{ immediate: false }"," 或服务端渲染时的 ",[1036,4395,4396],{},"{ server: false }","）",[2279,4399,4400,4402],{},[1036,4401,1306],{},"：函数已被调用且 promise 处于挂起状态",[2279,4404,4405,4407],{},[1036,4406,3226],{},"：函数返回了一个值",[2279,4409,4410,4412],{},[1036,4411,1283],{},"：函数抛出了错误",[4414,4415,4416],"style",{},"html pre.shiki code .sF54B, html code.shiki .sF54B{--shiki-light:#39ADB5;--shiki-default:#E1E4E8;--shiki-dark:#89DDFF}html pre.shiki code .s6g6u, html code.shiki .s6g6u{--shiki-light:#E53935;--shiki-default:#85E89D;--shiki-dark:#F07178}html pre.shiki code .sXjFp, html code.shiki .sXjFp{--shiki-light:#9C3EDA;--shiki-default:#B392F0;--shiki-dark:#C792EA}html pre.shiki code .s0jeK, html code.shiki .s0jeK{--shiki-light:#39ADB5;--shiki-default:#9ECBFF;--shiki-dark:#89DDFF}html pre.shiki code .s-Aze, html code.shiki .s-Aze{--shiki-light:#91B859;--shiki-default:#9ECBFF;--shiki-dark:#C3E88D}html pre.shiki code .sV7Px, html code.shiki .sV7Px{--shiki-light:#9C3EDA;--shiki-default:#F97583;--shiki-dark:#C792EA}html pre.shiki code .sJTDI, html code.shiki .sJTDI{--shiki-light:#90A4AE;--shiki-default:#79B8FF;--shiki-dark:#BABED8}html pre.shiki code .sXPRQ, html code.shiki .sXPRQ{--shiki-light:#39ADB5;--shiki-default:#F97583;--shiki-dark:#89DDFF}html pre.shiki code .szyBz, html code.shiki .szyBz{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#F97583;--shiki-default-font-style:inherit;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .srJn9, html code.shiki .srJn9{--shiki-light:#6182B8;--shiki-default:#B392F0;--shiki-dark:#82AAFF}html pre.shiki code .smVNa, html code.shiki .smVNa{--shiki-light:#90A4AE;--shiki-default:#E1E4E8;--shiki-dark:#BABED8}html pre.shiki code .ssIVr, html code.shiki .ssIVr{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#FFAB70;--shiki-default-font-style:inherit;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sOUxV, html code.shiki .sOUxV{--shiki-light:#F76D47;--shiki-default:#79B8FF;--shiki-dark:#F78C6C}html pre.shiki code .sP6_D, html code.shiki .sP6_D{--shiki-light:#E53935;--shiki-default:#FFAB70;--shiki-dark:#F07178}html pre.shiki code .sOtFm, html code.shiki .sOtFm{--shiki-light:#E53935;--shiki-default:#E1E4E8;--shiki-dark:#F07178}html pre.shiki code .sZqJ9, html code.shiki .sZqJ9{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sJK67, html code.shiki .sJK67{--shiki-light:#E2931D;--shiki-default:#B392F0;--shiki-dark:#FFCB6B}html pre.shiki code .seQRr, html code.shiki .seQRr{--shiki-light:#E2931D;--shiki-default:#79B8FF;--shiki-dark:#FFCB6B}html pre.shiki code .s0q4w, html code.shiki .s0q4w{--shiki-light:#39ADB5;--shiki-default:#79B8FF;--shiki-dark:#89DDFF}html pre.shiki code .syA7L, html code.shiki .syA7L{--shiki-light:#E53935;--shiki-default:#B392F0;--shiki-dark:#F07178}html pre.shiki code .s5Y2e, html code.shiki .s5Y2e{--shiki-light:#90A4AE;--shiki-default:#B392F0;--shiki-dark:#BABED8}html pre.shiki code .si1Qm, html code.shiki .si1Qm{--shiki-light:#FF5370;--shiki-default:#79B8FF;--shiki-dark:#FF9CAC}",{"title":354,"searchDepth":1159,"depth":1159,"links":4418},[4419,4425,4426,4429],{"id":1052,"depth":1100,"text":1052,"children":4420},[4421,4422,4423],{"id":1332,"depth":1159,"text":1333},{"id":1543,"depth":1159,"text":1544},{"id":1713,"depth":1159,"text":4424},"使你的 handler 可中止",{"id":2319,"depth":1100,"text":2319},{"id":3241,"depth":1100,"text":3241,"children":4427},[4428],{"id":3719,"depth":1159,"text":3719},{"id":4148,"depth":1100,"text":4148,"children":4430},[4431],{"id":4382,"depth":1159,"text":4382},"md",{"links":4434},[4435],{"label":4436,"icon":4437,"to":4438,"size":3406},"Source","i-simple-icons-github","https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt\u002Fblob\u002Fmain\u002Fpackages\u002Fnuxt\u002Fsrc\u002Fapp\u002Fcomposables\u002FasyncData.ts",null,{"title":441,"description":442},"docs\u002F4.api\u002F2.composables\u002Fuse-async-data","8gwes2IFBOBARgxXBbNs5s4OtaNV9VlSfVJM3zAQBhg",1785179856176]