Skip to content

Instantly share code, notes, and snippets.

@pomber
Created April 26, 2017 19:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pomber/57230d30dd86176b90cf39eabfc79192 to your computer and use it in GitHub Desktop.
Save pomber/57230d30dd86176b90cf39eabfc79192 to your computer and use it in GitHub Desktop.
function render(element, parentDom) {
const { type, props } = element;
const dom = document.createElement(type);
const isListener = name => name.startsWith("on");
Object.keys(props).filter(isListener).forEach(name => {
const eventType = name.toLowerCase().substring(2);
dom.addEventListener(eventType, props[name]);
});
const isAttribute = name => !isListener(name) && name != "children";
Object.keys(props).filter(isAttribute).forEach(name => {
dom[name] = props[name];
});
const childElements = props.children || [];
childElements.forEach(childElement => render(childElement, dom));
parentDom.appendChild(dom);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment