博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
react 闲谈
阅读量:5007 次
发布时间:2019-06-12

本文共 2036 字,大约阅读时间需要 6 分钟。

从事前端一段时间了,公司用的框架都是vue,但是不知为何对react却情有独钟,这是不是所谓的吃着碗里的看着锅里的 哈哈哈

从头好好总结下react吧 小白一个 大神勿喷

瞎说一

  1. react是由两部分组成,react包和react-dom,语法呢都是ES6,那ReactDOM中最常用的方法呢就是render
  2. 那说到react 不得不说一个JSX元素, 此乃何物,这么说 它是JavaScript 与 xml 爱情的结晶 哈哈哈 那么html也是xml的一种 所以 就是javascript + html;JSX 中的html部分和原生的html基本一样,也不完全一样,JSX是一个语法糖 最后通过babel进行转义
    ReactDOM.render的写法
React.createElement(  "h1",  { className: "red" },  "简直走别拐弯",  React.createElement(      "span",      { id: "handsome" },      "帅哥"  ))
  • 最终会转化成一个对象"虚拟dom" {type:'h1',props:{className:"red",children:[简直走别拐弯,{type:'span',props:{id:'handsome',children:'帅哥'}]}}
  • 1.先将jsx转化成react元素
  • 2.将react元素变成一个对象
  • 3.通过render方法渲染出一个对象

瞎说二

1.createElement简单实现

function createElement (type,props,...children)  {        if(childern.length === 1){            return {type,props:{...props,children:children}}    }}// {type:'h1',props:{className:"red",children:[简直走别拐弯,{type:'span',props:{id:'handsome',children:'帅哥'}]}}
let myRender = (obj,container) =>{    let {type,props} = obj;    let ele = document.createElement(type); // 创建第一层    for(let key in props){        if(key === 'children'){            // children有可能是数组 也可能是一个            if(typeof props[key] === 'object'){ // 数组 ['姜,',{type:'',props:{}}]                props[key].forEach(item=>{                    if(typeof item === 'object'){ // 如果子元素是对象那就继续调用render                        myRender(item,ele);                    }else{                        ele.appendChild(document.createTextNode(item));                    }                })            }else{ // 一个的化直接插入到h1中                ele.appendChild(document.createTextNode(props[key]));            }        }else if(key === 'className'){            ele.setAttribute('class',props[key]);        }else{            ele.setAttribute(key,props[key]);        }    }    container.appendChild(ele);// 将元素插入到页面中}; // 将我们自己创建出来的“元素”对象 插入到root中myRender(createElement("h1",{className: "red"},"简直走别拐弯,", createElement("span",{id: "handsome"},"帅哥")),document.getElementById('root'));

转载于:https://www.cnblogs.com/wzy0526/p/9935678.html

你可能感兴趣的文章
58. Length of Last Word(js)
查看>>
前端面试题汇总(持续更新...)
查看>>
如何成为F1车手?
查看>>
QT自定义消息
查看>>
Save (Not Permitted) Dialog Box
查看>>
装饰模式(Decorator)
查看>>
3-11
查看>>
任务13:在Core Mvc中使用Options
查看>>
利用Excel 2010数据透视图实现数字的可视化的图形直观展示
查看>>
Sort Colors
查看>>
HTML文本框水印
查看>>
2048记录反查(ruby)
查看>>
用ssh整合时,用sessionfactory的getCurrentSession()获取不到session
查看>>
【Alpha版本】 第四天 11.10
查看>>
软件公司书籍推荐——按角色划分
查看>>
剑指offer和leetcode都有的_反转链表
查看>>
chrome 插件地址 知乎
查看>>
javascript全局变量都是window对象的属性
查看>>
第八届蓝桥杯省赛第七题---日期问题
查看>>
iview树的修改某个节点,树刷新后自动展开你刚才展开的所有节点
查看>>