react:初始小例子
2019-06-09 09:49
1291 查看
创建虚拟dom,并且渲染到页面上
- 虚拟dom的定义 :虚拟dom 是描述dom节点的js对象来进行比较最小差异
<body> <!-- <div class="box" id="wrap"> 今天是周日 <p>北京</p> </div> --> <div id="root"></div> <script> let oP = createElement('p', { 'class': 'list' }, ["北京"]) let oDiv = createElement("div", { class: "box", id: "wrap", style: { width: "140px", height: "140px", background: "deepskyblue" }, }, ["今天是周日", oP]); // console.log(oDiv) function createElement(tag, props, children) { return { tag, props: {...props }, children: [...children], } } //把虚拟dom转化成真实的dom,并且把它渲染到页面上 render(oDiv, document.getElementById("root")); function render(vTree, root) { // console.log(vTree, root); //这里打印出来的是里面的属性和获取到的root节点 let target1 = createDom(vTree); root.appendChild(target1); // 把虚拟dom转化成真实的dom, function createDom(vTree) { let { tag, props, children } = vTree; // console.log(tag, props, children); //创建节点 let targetDom = document.createElement(tag); // console.log(targetDom) // 添加属性 // setAttribute(key, value) // console.log(Object.entries(props)) //解构出来是一个二维数组,所以需要遍历 Object.entries(props).forEach(item => { let [key, value] = item; // console.log(key, value) if (typeof value == "object") { value = Object.entries(value).map(item => item[0] + ":" + item[1]).join(";") } targetDom.setAttribute(key, value) }) //添加子节点 if (children) { children.forEach(item => { console.log(item) //p标签 let targetText = typeof item == 'string' ? document.createTextNode(item) : targetDom.appendChild(createDom(item)); targetDom.appendChild(targetText); }) } return targetDom; } } </script> </body>
相关文章推荐
- 【ReactJS】通过一个例子学习React组件的生命周期
- react论坛提问回复功能基本实现例子(react+redux)
- 最简单的React和Redux整合的例子
- 初始递归的经典例子
- react+webpack简单小例子
- WebStorm 下React和webpack的初始配置
- react 小例子
- react,react-router,react-redux最简单例子
- dva+antd写的一个react例子--服务器nginx 的配置
- React的第一个例子
- Redux系列02:一个炒鸡简单的react+redux例子
- Redux系列02:一个炒鸡简单的react+redux例子
- 自己写的React小例子
- react初始(1)
- react初始(2)
- 汇编中多进程--初始例子
- 详解react-refetch的使用小例子
- React 例子 - 右键菜单 context menu
- React 初始redux(入门首选)
- React Native基础&入门教程:以一个To Do List小例子,看props和state