从事前端一段时间了,公司用的框架都是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'));

react 闲谈的更多相关文章

  1. react 闲谈 之 JSX

    jsx元素-> React.createElement -> 虚拟dom对象 -> render方法 1.在react中想将js当作变了引入到jsx中需要使用{} 2.在jsx中,相 ...

  2. react组件的生命周期

    写在前面: 阅读了多遍文章之后,自己总结了一个.一遍加强记忆,和日后回顾. 一.实例化(初始化) var Button = React.createClass({ getInitialState: f ...

  3. 十分钟介绍mobx与react

    原文地址:https://mobxjs.github.io/mobx/getting-started.html 写在前面:本人英语水平有限,主要是写给自己看的,若有哪位同学看到了有问题的地方,请为我指 ...

  4. RxJS + Redux + React = Amazing!(译一)

    今天,我将Youtube上的<RxJS + Redux + React = Amazing!>翻译(+机译)了下来,以供国内的同学学习,英文听力好的同学可以直接看原版视频: https:/ ...

  5. React 入门教程

    React 起源于Facebook内部项目,是一个用来构建用户界面的 javascript 库,相当于MVC架构中的V层框架,与市面上其他框架不同的是,React 把每一个组件当成了一个状态机,组件内 ...

  6. 通往全栈工程师的捷径 —— react

    腾讯Bugly特约作者: 左明 首先,我们来看看 React 在世界范围的热度趋势,下图是关键词“房价”和 “React” 在 Google Trends 上的搜索量对比,蓝色的是 React,红色的 ...

  7. 2017-1-5 天气雨 React 学习笔记

    官方example 中basic-click-counter <script type="text/babel"> var Counter = React.create ...

  8. RxJS + Redux + React = Amazing!(译二)

    今天,我将Youtube上的<RxJS + Redux + React = Amazing!>的后半部分翻译(+机译)了下来,以供国内的同学学习,英文听力好的同学可以直接看原版视频: ht ...

  9. React在开发中的常用结构以及功能详解

    一.React什么算法,什么虚拟DOM,什么核心内容网上一大堆,请自行google. 但是能把算法说清楚,虚拟DOM说清楚的聊聊无几.对开发又没卵用,还不如来点干货看看咋用. 二.结构如下: impo ...

随机推荐

  1. Google自动打印

    浏览器打印功能,有很多小伙伴可能不太清楚,这里我们可以学习一下. 情景:开发一个需要打印小票的项目.(在订单页里,给客户添加一个打印的操作) 1.假设打印机已经连接好了 2.我们这一节用的浏览器是Go ...

  2. Jboss未授权访问部署木马 利用exp

    查看系统名称 java -jar jboss_exploit_fat.jar -i http://www.any.com:8080/invoker/JMXInvokerServlet get jbos ...

  3. SQL优化的总结和一些避免全盘扫描的注意事项

    1.应尽量避免在 where 子句中使用 != 或 <> 操作符,否则将引擎放弃使用索引而进行全表扫描. 2.应尽量避免在 where 子句中使用 or 来连接条件,如果一个字段有索引,一 ...

  4. Nginx如何配置基础缓存

    // /path/to/cache/:用于缓存的本地磁盘目录 // levels :在 /path/to/cache/ 设置了一个两级层次结构的目录. // 将大量的文件放置在单个目录中会导致文件访问 ...

  5. 安卓开发之Toolbar返回键

    本文前三步演示了为Toolbar添加返回键并实现返回的步骤,第四步给出了设置返回键颜色的方法. 1.在xml布局中引用toolbar: <android.support.design.widge ...

  6. 自己整理的的数据操作DbHelper

    using System.Data; using System.Data.SqlClient; using System.Configuration; namespace WindowsFormsAp ...

  7. ppp协议解析二

    转:http://blog.csdn.net/yangzheng_yz/article/details/11526747 PPP(Point to Point Protocol,点对点协议)协议是为在 ...

  8. 《黑白团团队》第九次团队作业:Beta冲刺第二天

    项目 内容 作业课程地址 任课教师首页链接 作业要求 团队项目 填写团队名称 黑白团团队 填写具体目标 认真负责,完成项目 团队项目Github仓库地址链接. 第一天 日期:2019/6/24 1.1 ...

  9. metal feature and specification

    https://developer.apple.com/metal/Metal-Feature-Set-Tables.pdf 宝贝 https://developer.apple.com/metal/ ...

  10. Redis:RedisHelper(5)

    /// <summary> /// Redis 助手 /// </summary> public class RedisHelper { /// <summary> ...