React初學者,你需要知道這些

2021-09-11 02:29:13 字數 2675 閱讀 4767

react 不是 mvc 框架,也不同於其他任何框架。它只是乙個用來渲染你檢視的庫。如果你來自 mvc 的世界,你需要意識到 react 只是』v』,且是部分等於。你需要在其他地方找到你的 『m』 和 『c』。不然你終將會在令人生厭的 react **前止步。

這點是顯而易見的,但也值得討論。每乙個優秀的開發者都知道小的類或模組更容易理解,測試和維護。對於 react 元件來說也是一樣。在開始使用 react 時會有乙個疑問,那就是我的元件到底該要多小?顯然,確定的尺寸取決於很多因素(包括你和你的團隊成員的偏好),但通常我的建議是讓你的元件比你認為的還要小很多。比如下面這個用於展示我最近部落格推送的元件:

const

latestpostscomponent

= props =>

(latest posts<

/h1>

<

/div>

post=

/>)}

<

/div>

<

/section>

);

這個元件本身是乙個,僅有2個在裡面。第乙個是標題,第二個映**一些資料,為每乙個元素渲染了。我認為這是乙個元件適合的尺寸。

之前有定義 react 元件有兩種選擇,第一種是react.createclass():

const mycomponent = react.

createclass(/

>;}

});

另一種是 es6 的類:

class

mycomponent

extends

react.component

/>;}

}

react 0.14 引入了尋得定義元件的語法:

const

mycomponent

= props =>

(/>

);

這是至今我最喜歡的定義 react 元件的方法。除了更加簡潔的語法,這種方法對元件需要被分離時很有幫助。讓我們看乙個例子,假設我們沒有進行元件分離:

class

latestpostscomponent

extends

react.component

<

/div>

<

/section>);

}renderpostpreviews()

renderpostpreview

(post)`}

>

<

/a>

<

/h3>

<

/em>

<

/time>

<

/span>

>read more...

<

/a>

<

/div>

<

/article>);

}}

這種寫法並不是很糟糕。我們已經從render()方法中抽取了大量方法,並保證每一塊**都盡可能小並很好地命名。我們已經將renderpostpreviews()方法封裝地足夠好了。讓我們使用函式語法重寫這段**:

const

latestpostscomponent

= props =>

<

/div>

<

/section>);

};const

renderpostpreviews

= posts =>

( posts.

map(post =>

this

.renderpostpreview

(post)))

;const

renderpostpreview

= post =>

(>

<

/a>

<

/h3>

<

/em>

<

/time>

<

/span>

>read more...

<

/a>

<

/div>

<

/article>

);

兩段段**幾乎一致,只是後面的沒有了類的宣告。然而對我來說這是很大的區別。在基於類的例子中,我會看到class latestpostscomponent

>

<

/li>))

}<

/ol>);

listofnumbers.proptypes =

;它有一下幾點好處:

react 和 redux dev tools 都是非常棒的工具。react dev tool 是你能夠查閱已經渲染的 react 元素樹,這對於檢視瀏覽器中的檢視很有幫助。redux dev tool 更加出色,使你能檢視發生的每乙個動作,以及動作造成的狀態改變,甚至給你能夠回溯的能力。

你也可以設定熱模組來替代 webpack,使你的頁面在你的**改變時就更新-不需要瀏覽器主動重新整理。這使得反饋迴圈更加地高效。

關於棧,你需要知道這些

分別用四個字描述棧和佇列 棧 後進先出 佇列 先進先出 棧 一種特殊的線性表,其只允許在固定的一端進行插入和刪除元素操作。進行資料插入和刪除操作的一端稱為棧頂,另一端稱為棧底。棧中的資料元素遵守後進先出lifo last in first out 的原則。它的三個核心操作 入棧 棧的插入操作叫做進棧...

上手UDP,你只需要知道這些

一般都是通過socket類實現的。socket就是埠,實現一次資訊傳遞至少需要兩個埠。udp中資料的傳遞都是以資料報 packet 的形式進行的。形象地來說,可以把socket物件想象成快遞公司,packet就是快遞員。快遞公司安排快遞員去送貨,作為發快遞的人 傳送端 我們不需要知道快遞員從哪個物流...

接軟體開發專案,你需要知道這些!

作為乙個程式設計師,跟客戶交流是最困難的事情了,所以在上路之前,複習一下這兩年遇到的奇怪的客戶言論,以便以後更好地跟客戶交流。1 一定耐心給客戶解釋 和 是不一樣的。比如我們公司的門戶 總共也就乙個靜態頁面,只需很短的時間就能搞定。谷歌 那也是乙個 卻有成千上萬的工程師日以繼夜地工作。即便是同樣長相...