获得徽章 1
react的手写题:模拟render(virtualDom)函数过程,即根据virtualDom对象生成dom结构;
其中virtualDom是一个对象,包含tag, attrs, children属性,children为virtualDom数组;
思路:
1. 如果virtualDom不是对象,是数字或者字符串,在react中是允许的。那么返回document.createTextNode(String(vnode));
2. 从virtualDom中结构出tag, attrs = {}, children;
3. 根据tag创建一个元素document.createElement(tag);
4. 遍历attrs对象,调用setAttribute(key, attrs[key])给元素填充属性;
5. 如果children属性存在,且是非空数组,那么遍历children数组,依次调用render函数并作为孩子节点插入appendChild(my_render(child)));
其中virtualDom是一个对象,包含tag, attrs, children属性,children为virtualDom数组;
思路:
1. 如果virtualDom不是对象,是数字或者字符串,在react中是允许的。那么返回document.createTextNode(String(vnode));
2. 从virtualDom中结构出tag, attrs = {}, children;
3. 根据tag创建一个元素document.createElement(tag);
4. 遍历attrs对象,调用setAttribute(key, attrs[key])给元素填充属性;
5. 如果children属性存在,且是非空数组,那么遍历children数组,依次调用render函数并作为孩子节点插入appendChild(my_render(child)));
展开
评论
点赞
赞了这篇文章