Community编程与开发github.com

tanstack-skills/tanstack-form

无头、高性能且类型安全的表单状态管理库,支持 TS/JS、React、Vue、Angular、Solid、Lit 和 Svelte。

tanstack-form 是什么?

此技能为开发者提供了一个关于 TanStack Form 的完整指南,这是一个用于构建高性能、类型安全表单的无头 UI 库。它支持多种主流框架(如 React、Vue、Angular、Solid、Lit 和 Svelte)以及纯 TypeScript/JavaScript 环境,允许开发者在不依赖任何特定 UI 组件库的情况下,完全控制表单的渲染和行为。该技能涵盖了表单的核心概念,包括字段管理、验证、提交处理以及复杂的表单状态管理。通过使用该技能,开发者可以快速集成表单状态管理到项目中,利用其类型推断和验证机制来构建健壮的用户输入界面。

兼容平台~Claude Code~Codex CLI~Cursor
Part ofReact
npx skills add https://github.com/tanstack-skills/tanstack-skills/tree/main/skills/tanstack-form

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

tanstack-form 是做什么的?

无头、高性能且类型安全的表单状态管理库,支持 TS/JS、React、Vue、Angular、Solid、Lit 和 Svelte。

概述

TanStack Form 是一个用于管理表单状态的库,它采用“无头”架构,即不提供任何预制的 UI 组件,而是提供一组强大的 Hooks 和工具函数。这使得开发者可以完全自由地设计表单的外观和行为,同时享受出色的性能、类型安全和可扩展性。无论你使用的是哪种主流前端框架,TanStack Form 都能提供一致的 API 和开发体验。

主要特性

  • 无头设计:不绑定任何 UI 库,你可以使用任意组件或原生 HTML 元素来构建表单。
  • 类型安全:完全基于 TypeScript 构建,提供精确的类型推断,减少运行时错误。
  • 高性能:仅更新必要的部分,避免不必要的重新渲染,确保大型表单也能流畅运行。
  • 多框架支持:官方支持 React、Vue、Angular、Solid、Lit、Svelte 以及纯 TS/JS。
  • 灵活的验证:支持同步/异步验证、字段级验证、表单级验证以及自定义验证器。
  • 丰富的插件生态:提供字段数组、表单订阅等插件,满足复杂场景需求。

快速开始

安装

选择你正在使用的框架,安装对应的包:

# React
npm install @tanstack/react-form

# Vue
npm install @tanstack/vue-form

# Angular
npm install @tanstack/angular-form

# Solid
npm install @tanstack/solid-form

# Svelte
npm install @tanstack/svelte-form

# Lit
npm install @tanstack/lit-form

基础用法 (React 示例)

import { useForm } from '@tanstack/react-form'
import { zodValidator } from '@tanstack/zod-form-adapter'
import { z } from 'zod'

function MyForm() {
  const form = useForm({
    defaultValues: {
      name: '',
      email: '',
    },
    onSubmit: async ({ value }) => {
      // 处理表单提交
      console.log(value)
    },
    // 使用 Zod 适配器进行验证
    validatorAdapter: zodValidator(),
  })

  return (
    <form
      onSubmit={(e) => {
        e.preventDefault()
        e.stopPropagation()
        form.handleSubmit()
      }}
    >
      <form.Field
        name="name"
        validators={{
          onChange: z.string().min(3, '名字至少需要3个字符'),
        }}
        children={(field) => (
          <div>
            <input
              name={field.name}
              value={field.state.value}
              onBlur={field.handleBlur}
              onChange={(e) => field.handleChange(e.target.value)}
            />
            {field.state.meta.errors && (
              <span>{field.state.meta.errors.join(', ')}</span>
            )}
          </div>
        )}
      />
      <button type="submit">提交</button>
    </form>
  )
}

使用场景

  • 需要完全控制表单 UI 样式的项目。
  • 多框架共存或需要统一表单管理方案的大型应用。
  • 对表单性能要求极高的复杂数据录入场景。
  • 希望利用 TypeScript 类型系统来保证数据一致性的开发团队。

链接

Individual skills in this repo

This repo contains 5 individual skills — each has its own dedicated page.

相关技能