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
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
目标
和
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