formik简单解析

1,159 阅读1分钟

大概原理:formik内部实现了一个叫做Formik的组件,是一个函数式组件。

Formik接收组件属性,如同react-router一样,显示优先级从高到低如下:

component -> render -> children

在formik内部实现了一个自定义钩子,用于抽象props的处理逻辑,如下图:


其中重点看一下初始值的处理:

1. 初始值设置为初始state的值


2. change方法执行,value 值改变,从而使用dispatch重新渲染


其中用到的钩子函数:

1. useReducer,用过redux的同学应该比较了解reducer和dispatch的用法,dispatch之后会重新执行渲染,和useState方法差不多。

2. useCallback,会根据依赖项变化决定是否要更新fn,返回memorized的回调函数

3. useLayoutEffect和useEffect方法差不多,都是渲染后执行副作用方法。不同的是useLayoutEffect是在绘制之前执行,useEffect在绘制之后执行。