1<!doctype html> 2<html lang="en" dir="ltr" class="docs-wrapper plugin-docs plugin-id-default docs-version-4.0 docs-doc-page docs-doc-id-getting-started/basic-usage" data-has-hydrated="false"> 3<head> 4<meta charset="UTF-8"> 5<meta name="generator" content="Docusaurus v3.5.2"> 6<title data-rh="true">Basic usage | uniforms | React form library for building forms from any schema</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://uniforms.tools/docs/getting-started/basic-usage"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="4.0"><meta data-rh="true" name="docusaurus_tag" content="docs-default-4.0"><meta data-rh="true" name="docsearch:version" content="4.0"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-4.0"><meta data-rh="true" property="og:title" content="Basic usage | uniforms | React form library for building forms from any schema"><meta data-rh="true" name="description" content="This example uses uniforms-bridge-zod and uniforms-antd packages as this bridge and theme don't require any extra configuration."><meta data-rh="true" property="og:description" content="This example uses uniforms-bridge-zod and uniforms-antd packages as this bridge and theme don't require any extra configuration."><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://uniforms.tools/docs/getting-started/basic-usage"><link data-rh="true" rel="alternate" href="https://uniforms.tools/docs/getting-started/basic-usage" hreflang="en"><link data-rh="true" rel="alternate" href="https://uniforms.tools/docs/getting-started/basic-usage" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://WWWW16GKXU-dsn.algolia.net" crossorigin="anonymous"><link rel="stylesheet" href="/assets/css/styles.62d8d14a.css">
7<script src="/assets/js/runtime~main.d4c3d591.js" defer="defer"></script>
vendor: 1 bytes, line 7
7
8<script src="/assets/js/main.8c136346.js" defer="defer"></script>
8 9</head> 10<body class="navigation-with-keyboard">
11<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t(null!==e?e:"light")}(),function(){try{const n=new URLSearchParams(window.location.search).entries();for(var[t,e]of n)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script>
11<div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_pO5G" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/uniforms.svg" alt="uniforms logo" class="themedComponent_Fxxq themedComponent--light_Dbub"><img src="/img/uniforms.svg" alt="uniforms logo" class="themedComponent_Fxxq themedComponent--dark_gvbK"></div></a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs/introduction/what-are-uniforms">Docs</a><a class="navbar__item navbar__link" href="/docs/examples/basic-usage">Playground</a><a href="https://github.com/vazco/uniforms" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_x305"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://forminer.com/?utm_source=uniforms&utm_medium=Menu_CTA&utm_campaign=Forminer_uniforms_menu_CTA&utm_id=Forminer_uniforms_menu" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Enterprise<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_x305"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://www.vazco.eu/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Custom solutions<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_x305"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__link" aria-haspopup="true" aria-expanded="false" role="button" href="/docs/getting-started/basic-usage">4.0</a><ul class="dropdown__menu"><li><a aria-current="page" class="dropdown__link dropdown__link--active" href="/docs/getting-started/basic-usage">4.0</a></li><li><a class="dropdown__link" href="/docs/3.0/what-are-uniforms">3.0</a></li></ul></div><div class="toggle_APFP colorModeToggle_HoyU"><button class="clean-btn toggleButton_NsKr toggleButtonDisabled_BPIR" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)" aria-live="polite"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_JDzk"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_M9wd">
11<path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="navbarSearchContainer_Je2J"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_hEAm"><div class="docsWrapper_ku4M"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_zK_E" type="button"></button><div class="docRoot_pdFY"><aside class="theme-doc-sidebar-container docSidebarContainer_VAef"><div class="sidebarViewport_sIbj"><div class="sidebar_MwYs"><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_IXBI"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Introduction</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/introduction/what-are-uniforms">What are uniforms?</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/introduction/motivation">Motivation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/introduction/comparison-table">Comparison table</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--active">Getting started</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting-started/installation">Installation</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/getting-started/basic-usage">Basic usage</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting-started/migrating-2-to-3">Migrating v2 to v3</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting-started/migrating-3-to-4">Migrating v3 to v4</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting-started/custom-theme">Custom theme</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/getting-started/faq">FAQ</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">Examples</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/examples/basic-usage">Basic usage</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/examples/form-layout">Form layout</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/examples/schema-props">Passing field props via schema</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/examples/field-props">Passing field props via components</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/examples/multi-step-form">Multi step form</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/examples/custom-field">Custom field</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link">API Reference</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/api-reference/forms">Forms</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/api-reference/fields">Fields</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/api-reference/bridges">Bridges</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/api-reference/context-data">Context data</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/api-reference/helpers">Helpers</a></li></ul></li></ul></nav></div></div></aside><main class="docMainContainer_EJl4"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_n79r"><div class="docItemContainer_pe4C"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_IrTD" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_Hfu2">
11<path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">Getting started</span><meta itemprop="position" content="1"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">Basic usage</span><meta itemprop="position" content="2"></li></ul></nav><span class="theme-doc-version-badge badge badge--secondary">Version: 4.0</span><div class="tocCollapsible_wr3j theme-doc-toc-mobile tocMobile_Ni02"><button type="button" class="clean-btn tocCollapsibleButton_ZNqh">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Basic usage</h1></header><div class="theme-admonition theme-admonition-info admonition_GVl3 alert alert--info"><div class="admonitionHeading_TJb7"><span class="admonitionIcon_yI9l"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_BvDm"><p>This example uses <code>uniforms-bridge-zod</code> and <code>uniforms-antd</code> packages as this bridge and theme don't require any extra configuration.</p></div></div> 12<h3 class="anchor anchorWithStickyNavbar_lNOj" id="1-installation">1. Installation<a href="#1-installation" class="hash-link" aria-label="Direct link to 1. Installation" title="Direct link to 1. Installation">â</a></h3> 13<p>First, install uniforms packages.</p> 14<div class="language-sh codeBlockContainer_kBVN theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_eKcI"><pre tabindex="0" class="prism-code language-sh codeBlock_UTMO thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_rz1f"><span class="token-line" style="color:#393A34"><span class="token plain">npm install uniforms uniforms-bridge-zod uniforms-antd</span><br></span></code></pre><div class="buttonGroup_EJmL"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_BjMh" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_bHls"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_TGR_"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div> 15<p>After that, we need also to install <code>zod</code> and <code>antd</code> packages.</p> 16<div class="language-sh codeBlockContainer_kBVN theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_eKcI"><pre tabindex="0" class="prism-code language-sh codeBlock_UTMO thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_rz1f"><span class="token-line" style="color:#393A34"><span class="token plain">npm install zod antd</span><br></span></code></pre><div class="buttonGroup_EJmL"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_BjMh" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_bHls"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_TGR_"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div> 17<h3 class="anchor anchorWithStickyNavbar_lNOj" id="2-create-a-schema">
172. Create a schema<a href="#2-create-a-schema" class="hash-link" aria-label="Direct link to 2. Create a schema" title="Direct link to 2. Create a schema">â</a></h3> 18<p>Let's create a schema for our form. We will use <code>zod</code> package for this.</p> 19<div class="language-ts codeBlockContainer_kBVN theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_eKcI"><pre tabindex="0" class="prism-code language-ts codeBlock_UTMO thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_rz1f"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> z </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'zod'</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> userSchema </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> z</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">object</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> username</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> z</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">string</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> password</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> z</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">string</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token function" style="color:#d73a49">min</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">8</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> schema </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">ZodBridge</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">
19{</span><span class="token plain"> schema</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> userSchema </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></span></code></pre><div class="buttonGroup_EJmL"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_BjMh" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_bHls"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_TGR_"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div> 20<h3 class="anchor anchorWithStickyNavbar_lNOj" id="3-create-a-form">3. Create a form<a href="#3-create-a-form" class="hash-link" aria-label="Direct link to 3. Create a form" title="Direct link to 3. Create a form">â</a></h3> 21<p>Now we can create a form. We will use <code>uniforms-antd</code> package for this.</p> 22<div class="language-tsx codeBlockContainer_kBVN theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_eKcI"><pre tabindex="0" class="prism-code language-tsx codeBlock_UTMO thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_rz1f"><span class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports punctuation" style="color:#393A34">{</span><span class="token imports"> </span><span class="token imports maybe-class-name">AutoForm</span><span class="token imports"> </span><span class="token imports punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">'uniforms-antd'</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">function</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">App</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> </span><span class="token tag punctuation" style="color:#393A34"><</span><span class="token tag class-name" style="color:#00009f">AutoForm</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">schema</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#393A34">=</span><span class="token tag script language-javascript punctuation" style="color:#393A34">{</span><span class="token tag script language-javascript" style="color:#00009f">schema</span><span class="token tag script language-javascript punctuation" style="color:#393A34">}</span><span class="token tag" style="color:#00009f"> </span><span class="token tag attr-name" style="color:#00a4db">onSubmit</span><span class="token tag script language-javascript script-punctuation punctuation" style="color:#393A34">=</span><span class="token tag script language-javascript punctuation" style="color:#393A34">
22{</span><span class="token tag script language-javascript console class-name" style="color:#00009f">console</span><span class="token tag script language-javascript punctuation" style="color:#393A34">.</span><span class="token tag script language-javascript property-access" style="color:#00009f">log</span><span class="token tag script language-javascript punctuation" style="color:#393A34">}</span><span class="token tag" style="color:#00009f"> </span><span class="token tag punctuation" style="color:#393A34">/></span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></span></code></pre><div class="buttonGroup_EJmL"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_BjMh" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_bHls"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_TGR_"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div> 23<p>That's it! Now we can render our form and see it in action.</p> 24<h3 class="anchor anchorWithStickyNavbar_lNOj" id="summary">Summary<a href="#summary" class="hash-link" aria-label="Direct link to Summary" title="Direct link to Summary">â</a></h3> 25<p>We have created a simple form with a schema. It uses AntD theme and Zod as our schema validator.</p> 26<!-- --> 27<div class="light sp-c-fVPbOs sp-c-fVPbOs-gMQIch-variant-light sp-wrapper"><div class="sp-c-ikJbEZ sp-layout" style="height:600px"><div class="sp-c-euXojQ sp-editor sp-stack" style="height:100%"><div class="sp-c-dyHYiL sp-tabs" translate="no"><div aria-label="Select active file" class="sp-c-gGbYbQ sp-tabs-scrollable-container" role="tablist"><div aria-controls="/App.tsx-:Rs2hralaqh:-tab-panel" aria-selected="true" class="sp-c-hluGOI sp-tab-container" role="tab"><button class="sp-c-bxeRRt sp-c-pacmO sp-tab-button" data-active="true" id="/App.tsx-:Rs2hralaqh:-tab" tabindex="0" title="/App.tsx" type="button">App.tsx</button></div></div></div><div aria-labelledby="/App.tsx-:Rs2hralaqh:-tab" class="sp-c-gtcpyq sp-code-editor" id="/App.tsx-:Rs2hralaqh:-tab-panel" role="tabpanel"><div aria-autocomplete="list" aria-label="Code Editor for App.tsx" aria-multiline="true" class="sp-pristine sp-typescript sp-c-jOWzsE sp-c-jkvvao sp-cm" role="textbox" tabindex="0" translate="no"><pre class="sp-c-fWymNx sp-pre-placeholder" style="margin-left:var(--sp-space-5)"><span class="sp-syntax-keyword">import</span> <span class="sp-syntax-punctuation">{</span> <span class="sp-syntax-plain">AutoForm</span> <span class="sp-syntax-punctuation">}</span> <span class="sp-syntax-keyword">from</span> <span class="sp-syntax-string">'uniforms-antd'</span><span class="sp-syntax-punctuation">;</span> 28<span class="sp-syntax-keyword">import</span> <span class="sp-syntax-punctuation">{</span> <span class="sp-syntax-plain">ZodBridge</span> <span class="sp-syntax-punctuation">}</span> <span class="sp-syntax-keyword">from</span> <span class="sp-syntax-string">'uniforms-bridge-zod'</span><span class="sp-syntax-punctuation">;</span> 29<span class="sp-syntax-keyword">import</span> <span class="sp-syntax-punctuation">{</span> <span class="sp-syntax-plain">z</span> <span class="sp-syntax-punctuation">}</span> <span class="sp-syntax-keyword">from</span> <span class="sp-syntax-string">'zod'</span><span class="sp-syntax-punctuation">;</span> 30 31<span class="sp-syntax-keyword">const</span> <span class="sp-syntax-plain">userSchema</span> = <span class="sp-syntax-plain">z</span>.<span class="sp-syntax-property">object</span><span class="sp-syntax-punctuation">(</span><span class="sp-syntax-punctuation">{</span> 32 <span class="sp-syntax-property">username</span><span class="sp-syntax-punctuation">:</span> <span class="sp-syntax-plain">z</span>.<span class="sp-syntax-property">string</span><span class="sp-syntax-punctuation">(</span><span class="sp-syntax-punctuation">)</span><span class="sp-syntax-punctuation">,</span> 33<span class="sp-syntax-punctuation">}</span><span class="sp-syntax-punctuation">)</span><span class="sp-syntax-punctuation">;</span> 34 35<span class="sp-syntax-keyword">const</span> <span class="sp-syntax-plain">schema</span> = <span class="sp-syntax-keyword">new</span> <span class="sp-syntax-plain">ZodBridge</span><span class="sp-syntax-punctuation">(</span><span class="sp-syntax-punctuation">{</span> <span class="sp-syntax-property">schema</span><span class="sp-syntax-punctuation">:</span> <span class="sp-syntax-plain">userSchema</span> <span class="sp-syntax-punctuation">}</span><span class="sp-syntax-punctuation">)</span><span class="sp-syntax-punctuation">;</span> 36 37<span class="sp-syntax-keyword">export</span> <span class="sp-syntax-keyword">default</span> <span class="sp-syntax-keyword">function</span> <span class="sp-syntax-definition">App</span><span class="sp-syntax-punctuation">(</span><span class="sp-syntax-punctuation">)</span> <span class="sp-syntax-punctuation">{</span> 38 <span class="sp-syntax-keyword">return</span> <span class="sp-syntax-punctuation">(</span> 39 <span class="sp-syntax-punctuation"><</span><span class="sp-syntax-definition">AutoForm</span>
40 <span class="sp-syntax-property">schema</span>=<span class="sp-syntax-punctuation">{</span><span class="sp-syntax-plain">schema</span><span class="sp-syntax-punctuation">}</span> 41 <span class="sp-syntax-property">onSubmit</span>=<span class="sp-syntax-punctuation">{</span><span class="sp-syntax-plain">model</span> <span class="sp-syntax-punctuation">=></span> <span class="sp-syntax-plain">window</span>.<span class="sp-syntax-property">alert</span><span class="sp-syntax-punctuation">(</span><span class="sp-syntax-plain">JSON</span>.<span class="sp-syntax-property">stringify</span><span class="sp-syntax-punctuation">(</span><span class="sp-syntax-plain">model</span><span class="sp-syntax-punctuation">)</span><span class="sp-syntax-punctuation">)</span><span class="sp-syntax-punctuation">}</span> 42 <span class="sp-syntax-punctuation">/></span> 43 <span class="sp-syntax-punctuation">)</span><span class="sp-syntax-punctuation">;</span> 44<span class="sp-syntax-punctuation">}</span></pre></div></div></div><div class="sp-c-euXojQ sp-preview sp-stack" style="height:100%"><div class="sp-c-juMdfR sp-preview-container"><iframe class="sp-c-fgviib sp-preview-iframe" title="Sandpack Preview"></iframe><div class="sp-c-kwibBT sp-preview-actions"><a href="https://codesandbox.io/api/v1/sandboxes/define?undefined&environment=create-react-app" rel="noreferrer noopener" target="_blank" title="Open in CodeSandbox" class="sp-icon-standalone sp-c-bxeRRt sp-c-gMfcns sp-c-dEbKhQ sp-button"><svg fill="none" height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg" stroke="currentColor"><title>Open on CodeSandbox</title><path d="M6.66665 3.33337H4.33331C3.78103 3.33337 3.33331 3.78109 3.33331 4.33337V11.6667C3.33331 12.219 3.78103 12.6667 4.33331 12.6667H11.6666C12.2189 12.6667 12.6666 12.219 12.6666 11.6667V9.33337" stroke-linecap="round"></path><path d="M10 3.33337H12.5667C12.6219 3.33337 12.6667 3.37815 12.6667 3.43337V6.00004" stroke-linecap="round"></path><path d="M7.33331 8.66668L12.5333 3.46667" stroke-linecap="round"></path></svg><span>Open Sandbox</span></a></div></div></div></div></div></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/getting-started/installation"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Installation</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/getting-started/migrating-2-to-3"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Migrating v2 to v3</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents__YKh thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#1-installation" class="table-of-contents__link toc-highlight">1. Installation</a></li><li><a href="#2-create-a-schema" class="table-of-contents__link toc-highlight">2. Create a schema</a></li><li><a href="#3-create-a-form" class="table-of-contents__link toc-highlight">3. Create a form</a></li><li><a href="#summary" class="table-of-contents__link toc-highlight">Summary</a></li></ul></div></div></div></div></main></div></div></div></div> 45</body> 46</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.