Closed 007sair closed 9 months ago
点击radio字段最右侧的删除按钮
label-1应该从form.values中被删除
label-1并未被完全删除,而是仍然存在data字段。 label-2可被正常删除。
@formily/core@2.2.29
这个问题不能完全算bug,出现问题的原因猜测是form.deleteValuesIn已经生效,字段也确实被删除。 但是由于label-1中的data字段依赖了其他字段,在删除后又触发了一次value的表达式执行,导致data被set了。
目前解决的办法时给依赖加个when(代码中items.ts中有注释),在没有依赖字段时就不会执行value中的表达式。
这样虽然可以解决问题,但是在某些极端情况下(比如给value赋值,value存在scope的函数时还是会复现) 所以,提这个问题是想看看大佬们能否从删除时机,根本上解决这个问题。
看了下,并不是什么 bug 行为,因为你配置的联动是没有条件的,那就是所有情况都会触发,包含你手动删除引发的联动也会触发,所以加一个 when 来排除这个触发条件没问题,不过从你这个需求来看,貌似就是单纯为了冗余一些数据给服务端,也不是为了 UI 层面上做展示,建议直接在 submit 的时候处理就行了
Reproduction link
Steps to reproduce
点击radio字段最右侧的删除按钮
What is expected?
label-1应该从form.values中被删除
What is actually happening?
label-1并未被完全删除,而是仍然存在data字段。 label-2可被正常删除。
Package
@formily/core@2.2.29
这个问题不能完全算bug,出现问题的原因猜测是form.deleteValuesIn已经生效,字段也确实被删除。 但是由于label-1中的data字段依赖了其他字段,在删除后又触发了一次value的表达式执行,导致data被set了。
目前解决的办法时给依赖加个when(代码中items.ts中有注释),在没有依赖字段时就不会执行value中的表达式。
这样虽然可以解决问题,但是在某些极端情况下(比如给value赋值,value存在scope的函数时还是会复现) 所以,提这个问题是想看看大佬们能否从删除时机,根本上解决这个问题。