antd: 是处理antd组件的,其中formitem是对Field的封装,里面是Field组件的子组件。
react: 是连接antd和core的中间层,FormProvider组件接收form通过context传给Field组件,Field组件通过form.createField(props)获取到field对象。通过field对象获取其props的属性,compont属性生成input组件并且是其value和onchange受field影响。通过decorator属性生成formItem组件,然后通过context传值下去。
core: 专门处理数据,通过crateform实力化Form类,Form类里面具有values,fields,values是专门保存field的value,fields专门保存field,
createField的时候根据props的name来判断是否实例化Field类,
Field类主要就是将changge的最新值赋值给本身的value和Form的values,
使input变为受控组件
reactive-raect:observe高阶组件获取到component,通过usereduce来创建forceUpdate,new Tracker传递forceupdate并且挂载到Tracker上
reactive: Tracker类上又个track函数接收组件并返回,同时将其Tracker存到stack上,
observable的时候new proxy,get的时候获取依赖(tracker),set的时候执行tracker上的forceupdate