Closed hehuasa closed 1 year ago
👍 Thanks for this! 🏷 I have applied any labels matching special text in your issue.
Please review the labels and make any necessary changes.
reactFiber,reactProp 是在描述issue时的简写~, 我看commit里是直接判断了item.__reactFiber || item.__reactProp
么。
实际的key值是 __reactFiber$xxxx(随机字符串)、__reactProps$xxxx(随机字符串)
这样的格式。。。
@igrowp
描述问题:
nexjs13 环境,部署运行 amis-editor 包,拖拽大部分表单类组件至编辑器,点击组件编辑其属性时,会报
RangeError: Maximum call stack size exceeded
错误。截图或视频:
经排查,应该是
/amis-editor/esm/renderer/FormulaControl.js
文件,写死了curRendererSchema.popOverContainer = window.document.body;
,然后执行translateSchema
方法,最终 在/amis-core/esm/utils/helper.js中,调用mapObject
方法中的循环逻辑, 导致了死循环的。 因为nextjs 13, window.document.body对象,有reactFiber,reactProp 两个子对象,递归遍历会导致死循环: 1. 2.3.
如何复现(请务必完整填写下面内容):
pnpm 装好 amis amis-core amis-editor amis-ui 依赖,webpack配置了 monaco-editor-webpack-plugin ;
amis schema
代码:AimsEditor.tsx:
app 路由,page.tsx:
建议: nextjs13 相对使用率还是比较普遍,能否特殊处理一下这个情况。例如在helper.js中,调用
mapObject
方法递归循环时,把reactFiber对象filter出去,或者给一个 popOverContainer 的配置项,避免写死。谢谢