壹、簡介:
1、什麽是Formik:是由React組件和hooks組成,它內置了表單的state管理操作,無需我們在單獨為表單建立state,同時使用了Context,能夠讓表單組件多層嵌套,不再需要我們壹層層傳遞。
2、解決哪些問題:
二、起步
1、安裝
2、推薦的校驗庫 Yup
學習文檔推薦: /search?type=content&q=Yup%20js
官方文檔: /jquense/yup
3、可以結合第三方UI庫壹起使用
4、Formik提交流程
提交前:
校驗:
提交:
5、校驗
ponent :接收壹個組件,( { field, form, ...props }) => ()
innerRef :回調函數,接收壹個DOM節點
name : 字段名稱,name也可以接受類似lodash的點路徑,例如:
2、<FieldArray />
渲染子節點方法:
3、<ErrorMessage />
children?: ((message: string) => React.ReactNode)
component?: string | React.ComponentType<FieldProps>
name: string
render?: (error: string) => React.ReactNode
4、<Form />
Form組件都幹了啥?
1、在<form>標簽基礎上進行封裝
2、接收Formik傳下來的參數,把form標簽自帶的方法傳進去
5、<FastField />
<FastField /> 是 <Field /> 用於大型表單(?30多個字段)或字段具有非常昂貴的驗證要求的優化版本。 <FastField /> 具有與完全相同的API <Field> ,但在 shouldComponentUpdate() 內部實現以阻止所有其他重新渲染,除非 <FastField /> 對 Formik 狀態的的相關部分/片段進行了直接更新。如果您的表單中的<Field />與其他所有 <Field /> 表單“無關” ,則可以使用 <FastField /> ,它不依賴於頂級其他部分 <Formik /> 的狀態。
6、<Formik />
四、hooks
1、useField
2、useFormikContext
3、useFormik
五、方法:
1、connect
將傳進來的組件,傳個formik對象,***享formik裏的屬性和方法
六、Yup的優點缺點
優點:功能強大
缺點:
1、復用性不強,因為他是鏈式結構
2、壹坨,沒有json-schema看起來簡單直接