Replies: 2 comments
-
暴露基础的model增删api可能会产生比较多的样板代码,可以考虑以下2种方案:
|
Beta Was this translation helpful? Give feedback.
0 replies
-
|
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
目标
和
View
模式的destroyOnUnmount
保持一致的行为,提供两种能力设计
主要涉及三块改动:
FormSetModel
和FormModel
支持增/删子 modelFormArrayModel
支持增/删子 modelFormSetModel 和 FormModel
removeChild
会返回当前的 model,下次调用registerChild
的时候如果把上次的 model 直接加回去,那就能实现数据保留;如果不希望保留上次的数据,调用registerChild
的时候传一个新的 model 就行了。FormArrayModel
数组的情况要复杂一些,现在的 mutation API 参数都是值,而不是 model,所以需要提供一套新的 API 才能和
FormSetModel
API 行为上保持一致性。数据保留/数据丢弃的做法和
FormSetModel
一致。Builder API
当前 Builder API 的使用姿势:
要做触发局部 build 缺少一个重要能力:通过类似对象属性/数组下标的方式访问内层 Builder 的能力。
期望的用法
API 设计
如果能够推导出返回的 Builder 类型,那么可以把范型参数去了,实现的时候看下。
FieldSetBuilder
和FormBuilder
FieldArrayBuilder
如何访问 Form 的 builder?
每个通过
Builder
API 常见的 model 对象上都有一个builder
属性,通过该属性就能获取用于生成这个 model 的Builder
对象。表单项增/删触发组件重绘
提供一个新的 hook
useNamedChildModel
,这个 hook 会在FieldSetModel
或者FormModel
的 child 发生增/删时触发 React 的重绘。注意,useNamedChildModel
不会在 child 内部的值发生变化触发重绘。Beta Was this translation helpful? Give feedback.
All reactions