React入门(有门才可以)

    前提声明:此React系列,侧重点是如何快速上手写React代码,对于一些基础的概念不会详细阐述,快速上手写代码,上手写代码,写代码(重要事情说三遍)

React简介

这一款由Facebook出品的,用于构建用户界面的JavaScript框架

React核心编程思想

一.小历程

  1.前端开发,需要手动管理,操作DOM和监控控件状态变化,过程繁琐,如此在大规模应用情景下维护困难.

  2.解决频繁操作DOM,那么,我这样如何-每次状态有更新的情况下重新渲染整个UI,便可省去一次一次手动改变DOM操作.

  3.新的问题来啦,每次都需要重新渲染整个UI效率低下,所以这个时候厉害的角色上场了,Virtual DOM!


厉害了,Virtual DOM 是什么鬼,必须得有小三插脚解释下,场面才不会那么混乱.

–––––––––––––––––小三解释虚拟DOM:–––––––––––––––
*1.概念
  虚拟 DOM 是在 DOM 的基础上建立了一个抽象层,我们对数据和状态所做的任何改动,都会被自动且高效的同步到虚拟 DOM,最后再批量同步到 DOM 中。React 会在内存中维护一个虚拟 DOM 树,当我们对这个树进行读或写的时候,实际上是对虚拟 DOM 进行的.


*2.苟且之事的过程是是这样的
  1>.数据更新;
  2>.React 会自动更新新虚拟DOM;
  3>.通过对比新虚拟DOM和旧虚拟DOM找出不同点(different),得到一个Patch;
  4>.将这个Patch放到一个队列中;
  5>.最终'批量'更新Patch到DOM中;
这种事情怎么可能没图了,太不正常了(捉奸捉脏)
!

01_Virtual DOM.png


  4.把所有的HTML组件都抽象化JS中,不在需要HTML模板,直接在JS中写HTML;如何实现在如此霸道直接的操作,JSX来啦;Facebook在PHP已经使用XHP很久了,把那套方法搬到JavaScript上就成了JSX。

JSX小语法小演示:
    <script type="text/babel">
        let title=(<div><strong>Hello JSX</strong></div>);
        ReactDOM.render(
                title,
                document.querySelector('#app')
        )
    </script>

  5.UI的状态和获取的数据需要分开处理,使用state和props的概念来区分它们。

二.组件化

  除了不需要对DOM进行直接操作,提高性能;React中还有一个重要的思想是组件化,即UI中的每个组件都是独立封装的,同时,由于这些组件独立于HTML,使他们不仅可以运行在浏览器里,还可以作为原生应用的组件来运行.(组件类比积木,每块小的积木都是独立的一部分,能够实现特定效果)

React实操

其实我就是想写个'Hello World';

一.前提准备

1.需要引入三个基本依赖文件(文件如何下载我就不废话了,npm,bower等都行,你开心就好~)

    /*1>.react.js文件是创建React元素和组件的核心文件,
      2>.react-dom.js文件用来把React组件渲染为DOM,
    此文件依赖于react.js文件,需在其后被引入。
      3>.Babel的主要用途是转换新标准的JavaScript代码为浏览器现今兼容的代码,同时它也提供JSX语句的转换;*/
    <script src="lib/react.js"></script>
    <script src="lib/react-dom.js"></script>
    <script src="lib/babel.min.js"></script>

二.直接撸Hello World

<body>
    <div id="app"></div>
    
    <script type="text/babel">
        //ReactDOM.render 是 React 的最基本方法,用于将模板转为 HTML 语言,并插入指定的 DOM 节点。
        ReactDOM.render(
                <h3>welcome</h3>,
                //document.querySelector()获取指定节点(方法很多)
                document.querySelector('#app')
        )
    </script>
</body>

三.组件化Hello World

  这儿有个重要问题必须讨论,擦擦,为什么你这儿React组件要酱样子定义,貌似和我的不一样,要开车啦;
  React推出后,出于不同的原因先后出现三种定义react组件的方式,殊途同归;具体的三种方式:
1.函数式定义的无状态组件
2.es5原生方式React.createClass定义的组件
3.es6形式的extends React.Component定义的组件
推荐阅读,不重复造轮子了,总结的挺好:React创建组件的三种方式及其区别

//此处直接上现在推荐的方法啦~
<body>
    <div id="app"></div>
    
    <script type="text/babel">
        class HelloWorld extends React.Component {
            constructor() {
                super();
                this.state={
                    msg:''
                };
            }
            render(){
                return (<div>
                    <input type="text" defaultValue="abc" />
                </div>)
            }
        }

        ReactDOM.render(
                <HelloWorld />,
                document.querySelector('#app')
        )
    </script>
</body>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,928评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,192评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,468评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,186评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,295评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,374评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,403评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,186评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,610评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,906评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,075评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,755评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,393评论 3 320
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,079评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,313评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,934评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,963评论 2 351

推荐阅读更多精彩内容

  • 参考文章:深度剖析:如何实现一个Virtual DOM 算法 作者:戴嘉华React中一个没人能解释清楚的问题——...
    waka阅读 5,959评论 0 21
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,926评论 25 707
  • 原教程内容详见精益 React 学习指南,这只是我在学习过程中的一些阅读笔记,个人觉得该教程讲解深入浅出,比目前大...
    leonaxiong阅读 2,820评论 1 18
  • 按照惯例,先给ReactJS背书 React是一个Facebook开发的UI库,于2013年5月开源,并迅速的从最...
    艾伦先生阅读 3,228评论 1 12
  • 天 蓝蓝的面孔 阴沉下来 天 要流泪了吗? 不! 听 那沙沙的雨声 是春的脚步 看 那嘀嗒的水滴 是春的汗水。
    就爱嗑瓜子阅读 313评论 5 3