mxCodec 没有正确解码 xml

mxCodec doesn't decode xml correctly

我在我的 React 应用程序中集成了 mxGraph(mxgraph npm package),所以当我尝试使用 xml 加载图形时,我在控制台中收到错误消息

TypeError: geo.clone is not a function

与我在单个 html 文件中所做的相同,它正在运行。

我调查了一下,发现react app里面的mxCell和html不一样

在 HTML 的情况下,填充了 geometry 道具而不是反应(检查下面的屏幕)

有人帮我正确解码 xml 吗?

从单个 HTML 控制台解码 mxCell https://monosnap.com/file/yAHAi29zFGFpauqU2RtDcvmfPpZ0YJ

从 React 应用程序控制台解码 mxCell https://monosnap.com/file/0XxPwyEracX7hMCnMHckAmI8Rl6OEh

来自 React 组件的源代码:

const graph = new mx.mxGraph(this.automationRef.current)
new mx.mxRubberband(graph);

const xml = '<root>...</root>';
const doc = mx.mxUtils.parseXml(xml);
const codec = new mxCodec(doc);
let elt = doc.documentElement.firstChild;
const cells = [];
while (elt != null){
  const cell = codec.decodeCell(elt)
  cells.push(cell);
  graph.refresh();
  elt = elt.nextSibling;
}

graph.addCells(cells);

发现问题。 解决方法如下:

https://github.com/jgraph/mxgraph/issues/301#issuecomment-514284868

引用:

你应该加上

window['mxGraphModel'] = mxGraphModel;
window['mxGeometry'] = mxGeometry;

之前

let doc = mxUtils.parseXml(xml);
let codec = new mxCodec(doc);
codec.decode(doc.documentElement, graph.getModel());'

我发现decode方法解析xml需要windows参数

引用结束