As mentioned previously、私は基本的なハイパースクリプト言語としてMaquetteを使用したいと思います。したがって、私はmaquette.projector
を使用したくありません。しかし、Maquetteで作成したSVGオブジェクトをDOMに追加することはできますが、DOMは更新されていないようです。たとえば、以下のコードでは、ボタンをクリックして円を作成できると想定しています。 Chrome Devツールを使用してDOMを検査すると、SVGサークルオブジェクトがDOMに追加されてもDOMは更新されません。どのように私はDOMを更新するはずですか?Maquetteがそれを変更した後にDOMを更新する方法
var h = maquette.h;
var dom = maquette.dom;
var svg;
var svgNode;
var root;
var rootDiv;
function addCircle(evt) {
console.log("adding circle");
const c = h('g', [
h('circle#cool.sweet', {cx: '100', cy: '100', r: '100', fill: 'red'}),
]);
const g = dom.create(c).domNode;
svgNode.appendChild(g);
}
document.addEventListener('DOMContentLoaded', function() {
svg = h('svg', {styles: {height: "200px", width: "200px"}})
rootDiv = h('div.sweet', [
svg,
]);
root = dom.create(rootDiv).domNode;
document.body.appendChild(root);
svgNode = root.querySelector("svg");
const button = h('button', {
onclick: addCircle,
}, ["Add circle"]);
const buttonNode = dom.create(button).domNode;
root.appendChild(buttonNode);
});
<script src="//cdnjs.cloudflare.com/ajax/libs/maquette/2.4.1/maquette.min.js"></script>
なぜappendChild
何もレンダリングされていませんか?