Javascript Maquette修改DOM后如何更新DOM

Javascript Maquette修改DOM后如何更新DOM,javascript,typescript,svg,virtual-dom,maquette,Javascript,Typescript,Svg,Virtual Dom,Maquette,,我想使用Maquette作为基本的hyperscript语言。因此,我不想使用maquette.projector。然而,尽管能够将使用Maquette生成的SVG对象附加到DOM中,DOM似乎没有更新。例如,在下面的代码中,我希望能够单击按钮创建一个圆。如果我使用chromedev工具检查DOM,我可以看到SVG circle对象被添加到DOM中,但DOM尚未更新。我应该如何更新DOM var h=maquette.h; var dom=maquette.dom; var-svg; var

,我想使用Maquette作为基本的hyperscript语言。因此,我不想使用
maquette.projector
。然而,尽管能够将使用Maquette生成的SVG对象附加到DOM中,DOM似乎没有更新。例如,在下面的代码中,我希望能够单击按钮创建一个圆。如果我使用chromedev工具检查DOM,我可以看到SVG circle对象被添加到DOM中,但DOM尚未更新。我应该如何更新DOM

var h=maquette.h;
var dom=maquette.dom;
var-svg;
var svgNode;
变种根;
var-rootDiv;
函数addCircle(evt){
console.log(“添加圆圈”);
常数c=h('g'[
h('circle#cool.sweet',{cx:'100',cy:'100',r:'100',fill:'red'}),
]);
const g=dom.create(c.domNode);
追加子项(g);
}
document.addEventListener('DOMContentLoaded',函数(){
svg=h('svg',{样式:{高度:“200px”,宽度:“200px”})
rootDiv=h('div.sweet'[
svg,
]);
root=dom.create(rootDiv.domNode);
document.body.appendChild(根);
svgNode=root.querySelector(“svg”);
常量按钮=h('按钮'{
onclick:addCircle,
},[“添加圆]);
const buttonNode=dom.create(button).domNode;
根追加子项(按钮节点);
});

这是一个艰难的过程。圆圈没有出现在屏幕上的原因(尽管它被添加到DOM中)与XML名称空间有关

SVG元素及其后代应该获得SVG XML名称空间。当您使用maquette来呈现以嵌入SVG的HTML开头的节点时,您不必担心这一点

但是现在您可以通过创建
节点在SVG内部开始。Maquette假设您需要一个“非标准”HTML
节点,因为它不知道您在SVG中

这就是maquette为其
DOM提供第二个参数的原因。创建
方法,您可以按如下方式使用该方法来解决问题:

const g=dom.create(c,{名称空间:'http://www.w3.org/2000/svg'}).domNode