JSON2DOM = react 的 render 函数
问题
{
tag: 'DIV',
attrs:{
id:'app'
},
children: [
{
tag: 'SPAN',
children: [
{ tag: 'A', children: [] }
]
},
{
tag: 'SPAN',
children: [
{ tag: 'A', children: [] },
{ tag: 'A', children: [] }
]
}
]
}
把上诉虚拟 Dom 转化成下方真实 Dom
<div>
<span>
<a></a>
</span>
<span>
<a></a>
<a></a>
</span>
</div>
答案
遍历数据创建即可
function render(virtualDOM) { const { tag, attrs = {}, children } = virtualDOM; const elem = document.createElement(tag.toLowerCase()); for (let key in attrs) { elem.setAttribute(key, attrs[key]); } if (typeof children === "string") { elem.textContent = children; } else if (Array.isArray(children)) { children .map((item) => render(item)) .forEach((dom) => { elem.appendChild(dom); }); } return elem; } // test const json = { tag: 'DIV', attrs:{ id:'app' }, children: [ { tag: 'SPAN', children: [ { tag: 'A', children: [] } ] }, { tag: 'SPAN', children: [ { tag: 'A', children: [] }, { tag: 'A', children: [] } ] } ] } render(json)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: JS 树形结构转成列表
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论