1、预览窗口拖拽功能可能引发反复的文件提交。AI 分析如下,待验证:
EffectEditor 的 props.sentence 每次图形编辑器重新解析都会变成新对象,所以它的 effect 会再次触发:
EffectEditor.tsx (line 466)
它发出 editor:pixi-sync-command 后,TransformableBox 会重新挂载/刷新 Moveable:
TransformableBox.tsx (line 93)
然后 Moveable 的 onRenderEnd 会直接写回场景文件,即使不是用户真正拖拽结束:
TransformableBox.tsx (line 277)
写回后又 emit editor:drag-update-scene,图形编辑器收到后 fetchScene() 重新读场景:
dragEndUtils.ts (line 86)
GraphicalEditor.tsx (line 218)
这就解释了为什么“有的场景稳定,有的场景容易抽搐”:容易触发的场景大概率打开过或包含正在展开的 changeFigure / setTransform 效果编辑器,预览调整框参与了写回闭环。
2、效果编辑器是语句编辑块的子组件。因此更新语句后,这个子组件也被更新,并被重新渲染和打开。这严重影响了性能。应该将其设置为一个偏全局的组件,如果任何语句打开效果编辑器,就打开这个全局组件并处理那个语句的数据。
1、预览窗口拖拽功能可能引发反复的文件提交。AI 分析如下,待验证:
2、效果编辑器是语句编辑块的子组件。因此更新语句后,这个子组件也被更新,并被重新渲染和打开。这严重影响了性能。应该将其设置为一个偏全局的组件,如果任何语句打开效果编辑器,就打开这个全局组件并处理那个语句的数据。