React虛擬DOM中常用術(shù)語(yǔ)有哪些

這篇“React虛擬DOM中常用術(shù)語(yǔ)有哪些”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來(lái)看看這篇“React虛擬DOM中常用術(shù)語(yǔ)有哪些”文章吧。

在德惠等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站建設(shè)、成都網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作定制開(kāi)發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),成都營(yíng)銷網(wǎng)站建設(shè),外貿(mào)網(wǎng)站建設(shè),德惠網(wǎng)站建設(shè)費(fèi)用合理。

在React的所有術(shù)語(yǔ)中,有五種核心類型是需要我們記住的。這五種類型分別是

ReactElement / ReactElement Factory

ReactNode

ReactComponent / ReactComponent Class

下面我們分別來(lái)看這五種類型

React Element

在React中主要的虛擬DOM的類型就是ReactElement。ReactElement有四種屬性,分別是:type,props,key和ref。它沒(méi)有封裝的內(nèi)部方法,并且原型上面什么都沒(méi)有。

該類型我們可以通過(guò)React.createElement來(lái)創(chuàng)建。

var root = React.createElement('div');

為了可以渲染成一個(gè)新的DOM樹(shù),我們可以創(chuàng)建ReactElement類型的元素,并且將這些元素傳遞給ReactDOM.render方法進(jìn)行渲染。當(dāng)然這些ReactElement也可以帶有正規(guī)的DOM元素(其中包括HTML元素和SVG元素等等)。

通常情況下我們不要把ReactElement和真實(shí)的DOM元素相混淆。一個(gè)ReactElement是一個(gè)輕型的無(wú)狀態(tài)的不可變的元素,它是一個(gè)虛擬的DOM元素。其中渲染方法如下代碼

ReactDOM.render(root,document.getElementById(‘content’));

如果我們想在ReactElement上面加屬性的話,我們可以將屬性對(duì)象作為createElement方法的第二個(gè)參數(shù),然后其孩子節(jié)點(diǎn)可以作為第三個(gè)參數(shù)。

var child = React.createElement('li', null, 'Text Content');
var root = React.createElement('ul', { className: 'my-list' }, child);
ReactDOM.render(root, document.getElementById('example'));

同樣,這些在《React.createElement方法使用詳解》這篇文章中均有介紹。

如果我們要使用React的JSX語(yǔ)法的話,這些ReactElement元素就可以像這樣創(chuàng)建。

var root = <ul className="my-list">
             <li>Text Content</li>
           </ul>;
ReactDOM.render(root, document.getElementById('example'));

二者創(chuàng)建出來(lái)的元素可以是認(rèn)為等價(jià)的。

Factories

ReactElement-factory 是一個(gè)簡(jiǎn)單的生成帶有特定類型屬性的ReactElement的工廠方法。React帶有一個(gè)內(nèi)置的幫助手冊(cè),以便于你很方便的創(chuàng)建這個(gè)工廠方法。如下所示

function createFactory(type) {
  return React.createElement.bind(null, type);
}

createFactory方法為我們提供了一個(gè)很方便的創(chuàng)建ReactElement的方法,我們可以不再總是使用React.createElement(&lsquo;div&rsquo;)來(lái)創(chuàng)建了。

var div = React.createFactory('div');
var root = div({ className: 'my-div' });
ReactDOM.render(root, document.getElementById('example'));

除此之外,React還內(nèi)置了標(biāo)準(zhǔn)HTML標(biāo)簽的工廠方法,例子如下

var root = React.DOM.ul({ className: 'my-list' },
             React.DOM.li(null, 'Text Content')
           );

React Nodes

一個(gè)React節(jié)點(diǎn)可以是下面的任何一種情況

&middot; ReactElement
&middot; string (aka ReactText)
&middot; number (aka ReactText)
&middot; Array of ReactNodes (aka ReactFragment)

React Components

當(dāng)然,我們?cè)谑褂肦eact的時(shí)候可以僅僅使用ReactElement,但是,如果你想充分的利用React的優(yōu)勢(shì)的話,那么你就必須考慮使用ReactComponents去封裝狀態(tài)化的組件。

一個(gè)ReactComponent類僅僅只是一個(gè)Javascript類

var MyComponent = React.createClass({
  render: function() {
    ...
  }
});

當(dāng)這個(gè)構(gòu)造方法被調(diào)用的時(shí)候,至少要使用render返回一個(gè)對(duì)象,也就是說(shuō)在createClass的第一個(gè)參數(shù)中(我們看到是一個(gè)對(duì)象)必須有render。返回的這個(gè)對(duì)象就是指定的ReactComponent。關(guān)于React.createClass的使用我們可以參考《React入門 createClass使用說(shuō)明》

var component = new MyComponent(props); // 千萬(wàn)不要這樣寫

除了測(cè)試,最好不要這樣調(diào)用。把這個(gè)交給React來(lái)做,它會(huì)為你去實(shí)現(xiàn)的。

你可以將ReactComponent傳遞給createElement,這樣就可以得到一個(gè)ReactElement了。

var element = React.createElement(MyComponent);

或者也可以使用JSX語(yǔ)法

var element = <MyComponent />;

當(dāng)把element傳遞給ReactDOM.render的時(shí)候,React將會(huì)調(diào)用構(gòu)造方法去創(chuàng)建一個(gè)ReactComponent,示例如下

var component = ReactDOM.render(element, document.getElementById('example'));

如果你多次調(diào)用ReactDOM.render,并且傳遞給它的是相同類型的ReactElement還有相同的DOM元素容器。那么它們將會(huì)返回相同的實(shí)例對(duì)象。并且這個(gè)實(shí)例是有狀態(tài)的。

var componentA = ReactDOM.render(<MyComponent />, document.getElementById('example'));
var componentB = ReactDOM.render(<MyComponent />, document.getElementById('example'));
componentA === componentB; // true

這就是為什么你不要自己去構(gòu)造實(shí)例化對(duì)象。反之,ReactElement在它被構(gòu)造出來(lái)之前是一個(gè)虛擬的ReactComponent組件。原先的ReactElement和新的ReactElement會(huì)進(jìn)行對(duì)比,看是否需要?jiǎng)?chuàng)建新的ReactComponent組件?;蛘咴却嬖诘氖欠裥枰匦率褂?。

以上就是關(guān)于“React虛擬DOM中常用術(shù)語(yǔ)有哪些”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

名稱欄目:React虛擬DOM中常用術(shù)語(yǔ)有哪些
文章轉(zhuǎn)載:http://bm7419.com/article12/jddgdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、定制網(wǎng)站、手機(jī)網(wǎng)站建設(shè)搜索引擎優(yōu)化、自適應(yīng)網(wǎng)站、小程序開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)