\n<\/p>\n

    国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

    首頁 web前端 js教程 react框架可以干什么?react框架的詳細(xì)介紹(附完整的使用實(shí)例)

    react框架可以干什么?react框架的詳細(xì)介紹(附完整的使用實(shí)例)

    Sep 11, 2018 pm 04:45 PM
    react React框架

    React是一個(gè)JavaScript框架,用于構(gòu)建“可預(yù)期的”和“聲明式的”Web用戶界面,它已經(jīng)使Facebook更快地開發(fā)Web應(yīng)用。下面讓我們來看看文章的內(nèi)容吧

    一、特點(diǎn):

    1、簡單簡單的表述任意時(shí)間點(diǎn)你的應(yīng)用應(yīng)該是什么樣子的,React將會(huì)自動(dòng)的管理UI界面更新當(dāng)數(shù)據(jù)發(fā)生變化的時(shí)候。

    2、聲明式在數(shù)據(jù)發(fā)生變化的時(shí)候,React從概念上講與點(diǎn)擊了F5一樣,實(shí)際上它僅僅是更新了變化的一部分而已。React是關(guān)于構(gòu)造可重用組件的,實(shí)際上,使用React你做的僅僅是構(gòu)建組建。通過封裝,使得組件代碼復(fù)用、測試以及關(guān)注點(diǎn)分離更加容易。

    另外還有以下注意點(diǎn):

    React不是一個(gè)MVC框架

    React不使用模板

    響應(yīng)式更新非常簡單

    二、主要原理

    傳統(tǒng)的web應(yīng)用,操作DOM一般是直接更新操作的,但是我們知道DOM更新通常是比較昂貴的。而React為了盡可能減少對(duì)DOM的操作,提供了一種不同的而又強(qiáng)大的方式來更新DOM,代替直接的DOM操作。就是Virtual DOM,一個(gè)輕量級(jí)的虛擬的DOM,就是React抽象出來的一個(gè)對(duì)象,描述dom應(yīng)該什么樣子的,應(yīng)該如何呈現(xiàn)。通過這個(gè)Virtual DOM去更新真實(shí)的DOM,由這個(gè)Virtual DOM管理真實(shí)DOM的更新。

    為什么通過這多一層的Virtual DOM操作就能更快呢? 這是因?yàn)镽eact有個(gè)diff算法,更新Virtual DOM并不保證馬上影響真實(shí)的DOM,React會(huì)等到事件循環(huán)結(jié)束,然后利用這個(gè)diff算法,通過當(dāng)前新的dom表述與之前的作比較,計(jì)算出最小的步驟更新真實(shí)的DOM。

    Components 組件?

    在DOM樹上的節(jié)點(diǎn)被稱為元素,在這里則不同,Virtual DOM上稱為commponent。Virtual DOM的節(jié)點(diǎn)就是一個(gè)完整抽象的組件,它是由commponents組成。

    注:component 的使用在 React 里極為重要, 因?yàn)?components 的存在讓計(jì)算 DOM diff 更高效。

    State 和 Render

    React是如何呈現(xiàn)真實(shí)的DOM,如何渲染組件,什么時(shí)候渲染,怎么同步更新的,這就需要簡單了解下State和Render了。state屬性包含定義組件所需要的一些數(shù)據(jù),當(dāng)數(shù)據(jù)發(fā)生變化時(shí),將會(huì)調(diào)用Render重現(xiàn)渲染,這里只能通過提供的setState方法更新數(shù)據(jù)

    先看個(gè)官網(wǎng)demo:

    <!DOCTYPE html>
    <html>
    <head>
    <script src="http://fb.me/react-0.12.1.js"></script>
    <script src="http://fb.me/JSXTransformer-0.12.1.js"></script>
    </head>
    <body>
    <p id="example"></p>
    <script type="text/jsx">
    React.render(
    <h1>Hello, world!</h1>,
    document.getElementById(&#39;example&#39;)
    );
    </script>
    </body>
    </html>

    很簡單,瀏覽器訪問,可以看到Hello, world!字樣。JSXTransformer.js是支持解析JSX語法的,JSX是可以在Javascript中寫html代碼的一種語法。如果不喜歡,React也提供原生Javascript的方法。(想看更多就到PHP中文網(wǎng)React參考手冊欄目中學(xué)習(xí))

    另外一個(gè)demo:

    <html>
    <head>
    <title>Hello React</title>
    <script src="http://fb.me/react-0.12.1.js"></script>
    <script src="http://fb.me/JSXTransformer-0.12.1.js"></script>
    <script src="http://code.jquery.com/jquery-1.10.0.min.js"></script>
    <script src="http://cdnjs.cloudflare.com/ajax/libs/showdown/0.3.1/showdown.min.js"></script>
    <style>
    #content{
    width: 800px;
    margin: 0 auto;
    padding: 5px 10px;
    background-color:#eee;
    }
    .commentBox h1{
    background-color: #bbb;
    }
    .commentList{
    border: 1px solid yellow;
    padding:10px;
    }
    .commentList .comment{
    border: 1px solid #bbb;
    padding-left: 10px;
    margin-bottom:10px;
    }
    .commentList .commentAuthor{
    font-size: 20px;
    }
    .commentForm{
    margin-top: 20px;
    border: 1px solid red;
    padding:10px;
    }
    .commentForm textarea{
    width:100%;
    height:50px;
    margin:10px 0 10px 2px;
    }
    </style>
    </head>
    <body>
    <p id="content"></p>
    <script type="text/jsx">
    var staticData = [
    {author: "張飛", text: "我在寫一條評(píng)論~!"},
    {author: "關(guān)羽", text: "2貨,都知道你在寫的是一條評(píng)論。。"},
    {author: "劉備", text: "哎,咋跟這倆逗逼結(jié)拜了!"}
    ];
    var converter = new Showdown.converter();//markdown
    /** 組件結(jié)構(gòu):
    <CommentBox>
    <CommentList>
    <Comment />
    </CommentList>
    <CommentForm />
    </CommentBox>
    */
    //評(píng)論內(nèi)容組件
    var Comment = React.createClass({
    render: function (){
    var rawMarkup = converter.makeHtml(this.props.children.toString());
    return (
    <p className="comment">
    <h2 className="commentAuthor">
    {this.props.author}:
    </h2>
    <span dangerouslySetInnerHTML={{__html: rawMarkup}} />
    </p>
    );
    }
    });
    //評(píng)論列表組件
    var CommentList = React.createClass({
    render: function (){
    var commentNodes = this.props.data.map(function (comment){
    return (
    <Comment author={comment.author}>
    {comment.text}
    </Comment>
    );
    });
    return (
    <p className="commentList">
    {commentNodes}
    </p>
    );
    }
    });
    //評(píng)論表單組件
    var CommentForm = React.createClass({
    handleSubmit: function (e){
    e.preventDefault();
    var author = this.refs.author.getDOMNode().value.trim();
    var text = this.refs.text.getDOMNode().value.trim();
    if(!author || !text){
    return;
    }
    this.props.onCommentSubmit({author: author, text: text});
    this.refs.author.getDOMNode().value = &#39;&#39;;
    this.refs.text.getDOMNode().value = &#39;&#39;;
    return;
    },
    render: function (){
    return (
    <form className="commentForm" onSubmit={this.handleSubmit}>
    <input type="text" placeholder="Your name" ref="author" /><br/>
    <textarea type="text" placeholder="Say something..." ref="text" ></textarea><br/>
    <input type="submit" value="Post" />
    </form>
    );
    }
    });
    //評(píng)論塊組件
    var CommentBox = React.createClass({
    loadCommentsFromServer: function (){
    this.setState({data: staticData});
    /*

    方便起見,這里就不走服務(wù)端了,可以自己嘗試

    $.ajax({
    url: this.props.url + "?_t=" + new Date().valueOf(),
    dataType: &#39;json&#39;,
    success: function (data){
    this.setState({data: data});
    }.bind(this),
    error: function (xhr, status, err){
    console.error(this.props.url, status, err.toString());
    }.bind(this)
    });
    */
    },
    handleCommentSubmit: function (comment){
    //TODO: submit to the server and refresh the list
    var comments = this.state.data;
    var newComments = comments.concat([comment]);
    //這里也不向后端提交了
    staticData = newComments;
    this.setState({data: newComments});
    },
    //初始化 相當(dāng)于構(gòu)造函數(shù)
    getInitialState: function (){
    return {data: []};
    },
    //組件添加的時(shí)候運(yùn)行
    componentDidMount: function (){
    this.loadCommentsFromServer();
    this.interval = setInterval(this.loadCommentsFromServer, this.props.pollInterval);
    },
    //組件刪除的時(shí)候運(yùn)行
    componentWillUnmount: function() {
    clearInterval(this.interval);
    },
    //調(diào)用setState或者父級(jí)組件重新渲染不同的props時(shí)才會(huì)重新調(diào)用
    render: function (){
    return (
    <p className="commentBox">
    <h1>Comments</h1>
    <CommentList data={this.state.data}/>
    <CommentForm onCommentSubmit={this.handleCommentSubmit} />
    </p>
    );
    }
    });
    //當(dāng)前目錄需要有comments.json文件
    //這里定義屬性,如url、pollInterval,包含在props屬性中
    React.render(
    <CommentBox url="comments.json" pollInterval="2000" />,
    document.getElementById("content")
    );
    </script>
    </body>
    </html>

    效果:

    24.png

    本篇文章到這就結(jié)束了(想看更多就到PHP中文網(wǎng)React使用手冊欄目中學(xué)習(xí)),有問題的可以在下方留言提問。

    以上是react框架可以干什么?react框架的詳細(xì)介紹(附完整的使用實(shí)例)的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

    本站聲明
    本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

    熱AI工具

    Undress AI Tool

    Undress AI Tool

    免費(fèi)脫衣服圖片

    Undresser.AI Undress

    Undresser.AI Undress

    人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用于從照片中去除衣服的在線人工智能工具。

    Clothoff.io

    Clothoff.io

    AI脫衣機(jī)

    Video Face Swap

    Video Face Swap

    使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

    熱工具

    記事本++7.3.1

    記事本++7.3.1

    好用且免費(fèi)的代碼編輯器

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    禪工作室 13.0.1

    禪工作室 13.0.1

    功能強(qiáng)大的PHP集成開發(fā)環(huán)境

    Dreamweaver CS6

    Dreamweaver CS6

    視覺化網(wǎng)頁開發(fā)工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級(jí)代碼編輯軟件(SublimeText3)

    React Router使用指南:如何實(shí)現(xiàn)前端路由控制 React Router使用指南:如何實(shí)現(xiàn)前端路由控制 Sep 29, 2023 pm 05:45 PM

    ReactRouter使用指南:如何實(shí)現(xiàn)前端路由控制隨著單頁應(yīng)用的流行,前端路由成為了一個(gè)不可忽視的重要部分。ReactRouter作為React生態(tài)系統(tǒng)中最受歡迎的路由庫,提供了豐富的功能和易用的API,使得前端路由的實(shí)現(xiàn)變得非常簡單和靈活。本文將介紹ReactRouter的使用方法,并提供一些具體的代碼示例。安裝ReactRouter首先,我們需

    Java框架與前端React框架的整合 Java框架與前端React框架的整合 Jun 01, 2024 pm 03:16 PM

    Java框架與React框架的整合:步驟:設(shè)置后端Java框架。創(chuàng)建項(xiàng)目結(jié)構(gòu)。配置構(gòu)建工具。創(chuàng)建React應(yīng)用。編寫RESTAPI端點(diǎn)。配置通信機(jī)制。實(shí)戰(zhàn)案例(SpringBoot+React):Java代碼:定義RESTfulAPI控制器。React代碼:獲取并顯示API返回的數(shù)據(jù)。

    PHP、Vue和React:如何選擇最適合的前端框架? PHP、Vue和React:如何選擇最適合的前端框架? Mar 15, 2024 pm 05:48 PM

    PHP、Vue和React:如何選擇最適合的前端框架?隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,前端框架在Web開發(fā)中起著至關(guān)重要的作用。PHP、Vue和React作為三種具有代表性的前端框架,每一種都具有其獨(dú)特的特點(diǎn)和優(yōu)勢。在選擇使用哪種前端框架時(shí),開發(fā)人員需要根據(jù)項(xiàng)目需求、團(tuán)隊(duì)技能和個(gè)人偏好做出明智的決策。本文將通過比較PHP、Vue和React這三種前端框架的特點(diǎn)和使

    vue.js vs.反應(yīng):特定于項(xiàng)目的考慮因素 vue.js vs.反應(yīng):特定于項(xiàng)目的考慮因素 Apr 09, 2025 am 12:01 AM

    Vue.js適合中小型項(xiàng)目和快速迭代,React適用于大型復(fù)雜應(yīng)用。1)Vue.js易于上手,適用于團(tuán)隊(duì)經(jīng)驗(yàn)不足或項(xiàng)目規(guī)模較小的情況。2)React的生態(tài)系統(tǒng)更豐富,適合有高性能需求和復(fù)雜功能需求的項(xiàng)目。

    React與Vue:Netflix使用哪個(gè)框架? React與Vue:Netflix使用哪個(gè)框架? Apr 14, 2025 am 12:19 AM

    NetflixusesAcustomFrameworkcalled“ Gibbon” BuiltonReact,notReactorVueDirectly.1)TeamExperience:selectBasedAsedonFamiliarity.2)ProjectComplexity:vueforsimplerprojects,vueforsimplerprojects,reactforforforecomplexones.3)cocatizationNeedsneeds:reactofficatizationneedneeds:reactofferizationneedneedneedneeds:reactoffersizatization needeffersefersmoreflexiblesimore.4)ecosyaka

    React在HTML中的作用:增強(qiáng)用戶體驗(yàn) React在HTML中的作用:增強(qiáng)用戶體驗(yàn) Apr 09, 2025 am 12:11 AM

    React通過JSX與HTML結(jié)合,提升用戶體驗(yàn)。1)JSX嵌入HTML,使開發(fā)更直觀。2)虛擬DOM機(jī)制優(yōu)化性能,減少DOM操作。3)組件化管理UI,提高可維護(hù)性。4)狀態(tài)管理和事件處理增強(qiáng)交互性。

    React的生態(tài)系統(tǒng):庫,工具和最佳實(shí)踐 React的生態(tài)系統(tǒng):庫,工具和最佳實(shí)踐 Apr 18, 2025 am 12:23 AM

    React生態(tài)系統(tǒng)包括狀態(tài)管理庫(如Redux)、路由庫(如ReactRouter)、UI組件庫(如Material-UI)、測試工具(如Jest)和構(gòu)建工具(如Webpack)。這些工具協(xié)同工作,幫助開發(fā)者高效開發(fā)和維護(hù)應(yīng)用,提高代碼質(zhì)量和開發(fā)效率。

    Netflix的前端:React(或VUE)的示例和應(yīng)用 Netflix的前端:React(或VUE)的示例和應(yīng)用 Apr 16, 2025 am 12:08 AM

    Netflix使用React作為其前端框架。1)React的組件化開發(fā)模式和強(qiáng)大生態(tài)系統(tǒng)是Netflix選擇它的主要原因。2)通過組件化,Netflix將復(fù)雜界面拆分成可管理的小塊,如視頻播放器、推薦列表和用戶評(píng)論。3)React的虛擬DOM和組件生命周期優(yōu)化了渲染效率和用戶交互管理。

    See all articles