Web表單對於網站和應用程序至關重要。儘管本機HTML表格提供了基本功能,但管理其狀態,驗證和提交可能會變得複雜。反應以其組件驅動的方法,簡化了形式的處理,但仍可以導致詳細的代碼。 formik是一個輕巧的庫,優雅地解決了這些挑戰,簡化了狀態管理,驗證和提交。
本文展示了用Formik構建React表格,展示了其處理狀態,驗證和提交的能力。我們將從基本的React組件開始,然後集成Formik。
建立受控的反應形式
反應組件依賴於狀態和道具。 HTML表單元素通過其value
屬性維護內部狀態。這使它們無法控制的組件 - DOM管理國家。但是,受控組件(反應管理國家)提供了更好的控制權和單一的真理來源。
簡單的不受控制的HTML表格可能看起來像這樣:
<div class="formRow"> <label for="email">電子郵件</label> <input type="email" id="email"> </div> <div class="formRow"> <label for="password">密碼</label> <input type="password" id="password"> </div> <button type="submit">提交</button>
將其轉換為受控的反應組件:
函數htmlform(){ const [email,setemail] = react.usestate(“”); const [password,setpassword] = react.usestate(“”); 返回 (); }
這種方法為形式值提供了一個真實的來源,從而更輕鬆地驗證和性能優化。
為什麼選擇Formik?
存在許多形式的管理庫(例如,React Hook形式,Redux表單)。 Formik通過:
- 聲明方法:抽像簡化了狀態,驗證和提交。
- Escape Hatch:在需要時提供控制,儘管其抽象。
- 共同標準的狀態:將與形式相關的邏輯保持在組件中。
- 適應性:允許根據需要使用盡可能多或少的formik。
- 易用性:簡單有效。
讓我們將Formik集成到我們的形式組件中。
實施Formik
我們將創建一個基本的登錄表單,探索三種formik使用方法:
-
useFormik
鉤 - 與React上下文的Formik(
<formik></formik>
) -
withFormik
高階組件
演示需要Formik和YUP軟件包。
方法1: useFormik
鉤
我們當前的形式是非功能的。 useFormik
鉤提供Formik函數和變量。記錄返回的值顯示其內容。
我們將使用useFormik
與initialValues
和一個onSubmit
處理程序:
//反應組件 函數baseformik(){ const formik = useformik({{ 初始值:{電子郵件:“”,密碼:“”}, onsubmit(values){ //表格提交邏輯 } }); 返回 (); }
綁定形式以形成元素:
//反應組件 函數baseformik(){ const formik = useformik({{ 初始值:{電子郵件:“”,密碼:“”}, onsubmit(values){ //表格提交邏輯 } }); 返回 (); }
這將處理提交( onSubmit={formik.handleSubmit}
)和輸入狀態( value
,通過formik.getFieldProps
onChange
)。我們避免手動狀態管理和活動處理。破壞getFieldProps
和handleSubmit
進一步提高了代碼清晰度。
這<formik></formik>
組件提供了與內置組件這樣的進一步抽象<field></field>
,,,,<form></form>
, 和<errormessage></errormessage>
。這些組件利用渲染道具模式。
從'formik'導入{formik,field,form}; 函數formikrenderprops(){ const initialValues = {email:“”,密碼:“”}; const onSubmit =(values)=> { 警報(json.stringify(values,null,2)); }; 返回 ( <formik initialvalues="{initialValues}" onsubmit="{onSubmit}"> {()=>( <form> <field classname="email formField" name="email" type="email"></field> {/ * ...其他表單元素 */} </form> ) </formik> ); }
Formik處理狀態和提交;我們專注於形式結構。
與Formik的形式驗證
Formik在表單級別(使用validate
或validationSchema
),現場級別或手動觸發器提供驗證。表單級驗證立即驗證整個表單。 validate
用於自定義驗證,而validationSchema
則使用YUP之類的庫。
使用validate
的示例:
const formik = useformik({{ // ... validate :()=> { const errors = {}; if(!formik.values.email){errors.email =“必需”; } // ...其他驗證 返回錯誤; },, // ... });
示例與yup一起validationSchema
:
const formik = useformik({{ // ... 驗證chema:yup.object()。 shape({{ 電子郵件:yup.string()。電子郵件(“無效電子郵件”)。必要(“必需”), // ...其他驗證 }), // ... });
現場級別和手動驗證也是可能的。
方法3: withFormik
高階組件
withFormik
是包裝您的表單組件的高階組件。
實際例子
讓我們說明顯示錯誤消息並生成用戶名。
顯示錯誤消息
Formik簡化了錯誤顯示。檢查errors
對象並顯示消息:
<label htmlfor="email"> 電子郵件 {formik.touched.email && formik.errors.email} </label>
或使用<errormessage></errormessage>
:
<errormessage name="email"></errormessage>
生成用戶名
Formik的setValues
可用於從電子郵件中生成用戶名:
onsubmit(values){ formik.setValues({... values,用戶名:`@$ {values.email.split(“@”)[0]}`}); }
結論
Formik大大簡化了反應形式處理。本文涵蓋了基礎知識;探索Formik的文檔,以了解高級功能和用例。
以上是使用formik處理反應中的形式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

對於Astro,我們可以在構建過程中生成大部分網站,但是有一小部分服務器端代碼可以使用Fuse.js之類的搜索功能來處理搜索功能。在此演示中,我們將使用保險絲搜索一組個人“書籤”


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SublimeText3 Linux新版
SublimeText3 Linux最新版

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

禪工作室 13.0.1
強大的PHP整合開發環境

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。