Replies: 7 comments 5 replies
-
|
x-reactions移除没必要,后面还会有低代码场景可以用到的,不过这个方案很赞,我现阶段是通过动态注入data实现的,即在变动时将record直接递归注入子元素的所有data中,有了这个就可以把这个代码移除了 |
Beta Was this translation helpful? Give feedback.
-
|
我觉得不止$record.$parent 还可以$record.$root吧 |
Beta Was this translation helpful? Give feedback.
-
|
能不能让小程序也支持一些简单的表达式 |
Beta Was this translation helpful? Give feedback.
-
|
$parent改名$lookup,因为从CRUD语义上来看的话,父级不是指父级UI节点,也不是指父字段,相反它是属于父模型,所以应该以模型语义来表达 |
Beta Was this translation helpful? Give feedback.
-
|
这样写级联会更舒服一点,不过定义成{{ }}后,是否无法描述异步表达式的场景? |
Beta Was this translation helpful? Give feedback.
-
|
这个无法完全替代 'x-reactions': {
dependencies: ['contractType'],
effects: ['onFieldInputValueChange'],
fulfill: {
state: {
value: undefined
}
}
} |
Beta Was this translation helpful? Give feedback.
-
|
当有多个依赖,以及包含复杂的 JS 逻辑时,x-reactions 还是无法被替换的,要用字符串表达式替代完整的 JS 函数还是比较困难的,写着写着,字符串表达式可能就变成了字符串形式的函数 |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
想必用过formily的同学应该都知道,在自增列表中,如果每一行有几个相邻字段间的联动,我们正常应该如何实现了吧?
发现没,好复杂!
说实话,在协议中的联动协议,用x-reactions并不太优雅,那更优雅的方式是什么呢?
哇,是不是很神奇,其实现在已经支持了,在formily antd /next两个包中,只要是内部使用了ArrayBase的组件,都能享受到这个内置作用域变量,
当然,除了$record,我还提供了$index,所以后面有人再问,删除按钮想要基于索引动态隐藏咋做,你就给它说:
诶?可惜,$records我还没提供,所以,这就是我接下来要讲的内容了
标准化CRUD作用域变量规范
首先,变量名标准化
$record.$lookup.$index or $record.$lookup.$lookup.$index同时,$record,还有一个内置属性$lookup,可以获取它上级$record,也有内置属性$index,方便往上层层查找
这样我们能做什么?
其实我们甚至可以把整个表单数据也当做一个$record,因为它本身就是在维护数据库一张表的记录,那么,我们就能标准化到Form组件
在渲染的时候,会把它当前层级的对象或表单数据作为$record下发下去,这样就能做到用formily协议描述整个页面的时候,Form组件内部的任意节点获取到的$record都是子表单数据
当然如果它内部有ArrayField,在ArrayField某一行里的字段获取到的就是ArrayField内部的$record了
那如果我们还是想拿表单级别的record怎么拿呢?那就得使用$record.$lookup了
所以,我们有了formily协议,也有了标准化的CRUD作用域变量规范,貌似,我们好像不需要x-reactions了???
那主动联动怎么搞?可以这样
是不是真的不需要x-reactions了呢?
我觉得真的不需要了,可能后面formily3.0,直接移除也说不准
然后就是怎么让这套标准落地下去了。
首先,我会在@formily/react中提供一个组件,叫做RecordListScope,它用于注入$records,主要在自增组件或者表格组件中使用
然后我还会提供一个叫做RecordScope,主要用于注入$record/$index,主要在渲染每一行或者每个单元格的时候使用
好了,大家看看,这样的协议如何,是否优雅呢?
Beta Was this translation helpful? Give feedback.
All reactions