\n<\/p>\n

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

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

react框架可以做什麼? react框架的詳細(xì)介紹(附完整的使用實例)

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

React是一個JavaScript框架,用於建立「可預(yù)期的」和「聲明式的」Web使用者介面,它已經(jīng)使Facebook更快地開發(fā)Web應(yīng)用。下面讓我們來看看文章的內(nèi)容吧

一、特點(diǎn):

1、簡單簡單的表達(dá)任意時間點(diǎn)你的應(yīng)用應(yīng)該是什麼樣子的,React將會自動的管理UI介面更新當(dāng)資料改變的時候。

2、宣告式在資料發(fā)生變化的時候,React從概念上講與點(diǎn)擊了F5一樣,實際上它只是更新了變化的一部分而已。 React是關(guān)於建構(gòu)可重複使用元件的,實際上,使用React你做的只是建構(gòu)組成。透過封裝,使得元件程式碼重複使用、測試以及關(guān)注點(diǎn)分離更加容易。

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

React不是一個MVC框架

React不使用範(fàn)本

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

二、主要原理

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

為什麼透過這多一層的Virtual DOM操作就能更快呢?這是因為React有個diff演算法,更新Virtual DOM不保證馬上影響真實的DOM,React會等到事件循環(huán)結(jié)束,然後利用這個diff演算法,透過目前新的dom表述與之前的作比較,計算出最小的步驟更新真實的DOM。

Components 元件?

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

註:component 的使用在 React 裡極為重要, 因為 components 的存在讓計算 DOM diff 更有效率。

State 和Render

React是如何呈現(xiàn)真實的DOM,如何渲染元件,什麼時候渲染,怎麼同步更新的,這就需要簡單了解下State和Render了。 state屬性包含定義元件所需的部分?jǐn)?shù)據(jù),當(dāng)資料變更時,將會呼叫Render重現(xiàn)渲染,這裡只能透過提供的setState方法更新資料

先看個官網(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í))

另一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: "我在寫一條評論~!"},
{author: "關(guān)羽", text: "2貨,都知道你在寫的是一條評論。。"},
{author: "劉備", text: "哎,咋跟這倆逗逼結(jié)拜了!"}
];
var converter = new Showdown.converter();//markdown
/** 組件結(jié)構(gòu):
<CommentBox>
<CommentList>
<Comment />
</CommentList>
<CommentForm />
</CommentBox>
*/
//評論內(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>
);
}
});
//評論列表組件
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>
);
}
});
//評論表單組件
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>
);
}
});
//評論塊組件
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: []};
},
//組件添加的時候運(yùn)行
componentDidMount: function (){
this.loadCommentsFromServer();
this.interval = setInterval(this.loadCommentsFromServer, this.props.pollInterval);
},
//組件刪除的時候運(yùn)行
componentWillUnmount: function() {
clearInterval(this.interval);
},
//調(diào)用setState或者父級組件重新渲染不同的props時才會重新調(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>

效果:

react框架可以做什麼? react框架的詳細(xì)介紹(附完整的使用實例)

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

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

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

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

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版

神級程式碼編輯軟體(SublimeText3)

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

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

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

Java框架與React框架的整合:步驟:設(shè)定後端Java框架。建立專案結(jié)構(gòu)。配置建置工具。建立React應(yīng)用程式。編寫RESTAPI端點(diǎn)。配置通訊機(jī)制。實戰(zhàn)案例(SpringBoot+React):Java程式碼:定義RESTfulAPI控制器。 React程式碼:取得並顯示API回傳的資料。

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ú)特的特徵和優(yōu)勢。在選擇使用哪種前端框架時,開發(fā)人員需要根據(jù)專案需求、團(tuán)隊技能和個人偏好做出明智的決策。本文將透過比較PHP、Vue和React這三種前端框架的特徵和使

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

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

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

NetflixusesAcustomFrameworkcalled“ Gibbon” BuiltonReact,notReactorVuedIrectly.1)TeamSperience:selectBasedonFamiliarity.2)ProjectComplexity:vueforsimplerprojects:reactforforforproproject,reactforforforcompleplexones.3)cocatizationneedneeds:reactoffipicatizationneedneedneedneedneedneeds:reactoffersizationneedneedneedneedneeds:reactoffersizatization needefersmoreflexibleise.4)

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

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

React的生態(tài)系統(tǒng):庫,工具和最佳實踐 React的生態(tài)系統(tǒng):庫,工具和最佳實踐 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ù)雜界面拆分成可管理的小塊,如視頻播放器、推薦列表和用戶評論。 3)React的虛擬DOM和組件生命週期優(yōu)化了渲染效率和用戶交互管理。

See all articles