求教 当组件属性中存在array或者object类型的属性时,会导致TreeNodeWidget组件渲染两次或者三次的问题 #36
-
当组件属性中存在array或者object类型的属性时,拖拽组件到面板的时候,会导致TreeNodeWidget组件渲染两次,如果没有object或array类型的属性时,只会渲染一次 |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 3 replies
-
排除法定位问题吧,把问题范围缩到最小才方便确定问题原因 |
Beta Was this translation helpful? Give feedback.
-
看了一下,渲染2次或3次是合理的,因为对于数组或者对象,formily是会做默认值修正的,这里面是会存在一次数据操作,所以如果你没有设置默认值,那肯定会渲染两次,然后如果你设置了默认值,那就会渲染1次,但是问题来了,为啥最低是渲染两次。。。 这是因为SettingsForm内部依赖了schema变化,恰好Field的propsSchema是函数,内部依赖了节点componentName,所以拖进去的时候,schema会发生变化,所以会触发SettingsForm渲染两次,也就是会做两次数据修正 |
Beta Was this translation helpful? Give feedback.
-
死循环的问题,我在最新版里已经修复了,渲染3次的问题是因为formily没对空对象或者空数组做取等判断,导致重复赋值,然后你上一个内存泄漏的问题,请录个复现视频出来,我这边再详细看看 |
Beta Was this translation helpful? Give feedback.
死循环的问题,我在最新版里已经修复了,渲染3次的问题是因为formily没对空对象或者空数组做取等判断,导致重复赋值,然后你上一个内存泄漏的问题,请录个复现视频出来,我这边再详细看看