SuperAPI AI 工具集

nuxt-data

前端与建站

查看项目

更新于 10-15 09:31

技能介绍

用途

Nuxt 4 数据管理是面向 Nuxt 4 应用的数据层开发技能,围绕 composables、数据获取(useFetch/useAsyncData)与状态管理(useState 与 Pinia)三个方面提供模式与示例。适合在编写自定义 composables、实现 API 数据请求、处理分页/无限滚动/搜索、构建认证或复杂状态,以及排查 SSR 与响应式问题时参考。

主要能力

数据获取方法

技能提供三种方法的对比:

  • useFetch:适用于简单 API 调用,支持 SSR、缓存与响应式。
  • useAsyncData:适用于自定义异步逻辑,同样支持 SSR、缓存与响应式。
  • $fetch:仅客户端使用(如事件处理),不支持 SSR、缓存与响应式。

useFetch 支持响应式参数(如 page、search 的 ref 或 computed query,变化时自动重新请求)、transform 数据转换、pick 指定字段、错误处理(error 与 status 的 idle/pending/success/error 状态)、手动刷新(immediate: false 配合 execute/refresh)、缓存与去重(key、dedupe、getCachedData)以及懒加载(useLazyFetch、useLazyAsyncData)。useAsyncData 可用于并行请求(Promise.all)等自定义逻辑。

Nuxt 4 默认使用浅响应式,直接修改 data.value 的属性不会触发响应式;技能给出三种应对方式:开启 deep: true、替换整个值,或修改后调用 refresh 重新获取。

状态管理与 composables

useState 用于创建 SSR 安全、跨组件实例共享的响应式状态,是共享/全局状态的基础;ref 仅用于组件本地状态。技能给出认证(useAuth)、本地存储(useLocalStorage)、购物车(useCart)等 composables 示例,并包含 SSR 安全地访问浏览器 API 的模式(通过 import.meta.client / import.meta.server 判断环境)。

Pinia 集成

Pinia 用于复杂状态管理,安装命令为 bun add pinia @pinia/nuxt,在 nuxt.config.ts 的 modules 中加入 '@pinia/nuxt'。技能给出 store 定义示例,包含 state、getters、actions(如 login/logout)的写法与组件中的使用方式,并说明可加载引用文档处理 Pinia 与 SSR 集成、跨页面刷新持久化等主题。

使用方式

技能按需加载参考文档:编写复杂状态的 composables、排查状态管理与内存泄漏、实现 SSR 安全模式、构建认证或复杂状态 composables 时加载 composables.md;实现带响应式参数的 API 请求、排查浅/深响应式问题、数据在参数变化时不刷新、实现分页/无限滚动/搜索、理解 transform/缓存/错误处理时加载 data-fetching.md;设置 Pinia、创建 store 与 getters/actions、Pinia 与 SSR 集成、跨页面刷新持久化时加载 pinia-integration.md。

技能还整理了常见反模式,包括:用 ref 替代 useState 导致状态不共享、缺少错误处理、在 transform 中使用非确定性逻辑(如 Math.random 排序)导致 hydration 不匹配、在浅响应式 ref 上直接修改属性、参数变化后数据不刷新、useState 的 hydration 不匹配、导航后状态丢失、无限重新请求等,并给出对应的检查与修正建议。

适用场景

  • 编写自定义状态逻辑 composables,并区分单例与每次调用模式
  • 实现带响应式参数的 API 数据获取,处理分页、无限滚动与搜索
  • 构建认证、购物车等跨组件共享状态
  • SSR 安全的浏览器 API(如 localStorage)封装
  • 使用 Pinia 管理复杂全局状态并处理 SSR

限制

资料中未提供该技能的具体收费、价格、支持平台等额外信息。文中涉及的功能与用法均来自技能文档描述,实际使用效果可能因项目环境而异;未说明的细节暂未提供。