摘要:一個組件類必須要實現(xiàn)一個方法,這個方法必須要返回一個元素。你也可以把它改成,它就會顯示小書。注意,直接使用在的元素上添加類名如這種方式是不合法的?,F(xiàn)在頁面上是顯示小書。下一節(jié)中我們將介紹小書組件的組合嵌套和組件樹。
React.js 小書 Lesson7 - 組件的 render 方法
本文作者:胡子大哈
本文原文:http://huziketang.com/books/react/lesson7
轉(zhuǎn)載請注明出處,保留原文鏈接以及作者信息
在線閱讀:http://huziketang.com/books/react
React.js 中一切皆組件,用 React.js 寫的其實就是 React.js 組件。我們在編寫 React.js 組件的時候,一般都需要繼承 React.js 的 Component(還有別的編寫組件的方式我們后續(xù)會提到)。一個組件類必須要實現(xiàn)一個 render 方法,這個 render 方法必須要返回一個 JSX 元素。但這里要注意的是,必須要用一個外層的 JSX 元素把所有內(nèi)容包裹起來。返回并列多個 JSX 元素是不合法的,下面是錯誤的做法:
... render () { return (第一個第二個) } ...
必須要用一個外層元素把內(nèi)容進行包裹:
... render () { return (表達式插入) } ...第一個第二個
在 JSX 當中你可以插入 JavaScript 的表達式,表達式返回的結(jié)果會相應地渲染到頁面上。表達式用 {} 包裹。例如:
... render () { const word = "is good" return () } ...React 小書 {word}
頁面上就顯示“React 小書 is good”。你也可以把它改成 {1 + 2},它就會顯示 “React 小書 3”。你也可以把它寫成一個函數(shù)表達式返回:
... render () { return () } ...React 小書 {(function () { return "is good"})()}
簡而言之,{} 內(nèi)可以放任何 JavaScript 的代碼,包括變量、表達式計算、函數(shù)執(zhí)行等等。 render 會把這些代碼返回的內(nèi)容如實地渲染到頁面上,非常的靈活。
表達式插入不僅僅可以用在標簽內(nèi)部,也可以用在標簽的屬性上,例如:
... render () { const className = "header" return () } ...React 小書
這樣就可以為 div 標簽添加一個叫 header 的類名。
注意,直接使用 class 在 React.js 的元素上添加類名如 還有一個特例就是 for 屬性,例如 ,因為 for 也是 JavaScript 的關(guān)鍵字,所以在 JSX 用 htmlFor 替代,即 。而其他的 HTML 屬性例如 style 、data-* 等就可以像普通的 HTML 屬性那樣直接添加上去。 {} 上面說了,JSX 可以放置任何表達式內(nèi)容。所以也可以放 JSX,實際上,我們可以在 render 函數(shù)內(nèi)部根據(jù)不同條件返回不同的 JSX。例如: 上面的代碼中定義了一個 isGoodWord 變量為 true,下面有個用 {} 包含的表達式,根據(jù) isGoodWord 的不同返回不同的 JSX 內(nèi)容?,F(xiàn)在頁面上是顯示 React 小書 is good。如果你把 isGoodWord 改成 false 然后再看頁面上就會顯示 React 小書 is not good。 如果你在表達式插入里面返回 null ,那么 React.js 會什么都不顯示,相當于忽略了該表達式插入。結(jié)合條件返回的話,我們就做到顯示或者隱藏某些元素: 這樣就相當于在 isGoodWord 為 true 的時候顯示 is good,否則就隱藏。 條件返回 JSX 的方式在 React.js 中很常見,組件的呈現(xiàn)方式隨著數(shù)據(jù)的變化而不一樣,你可以利用 JSX 這種靈活的方式隨時組合構(gòu)建不同的頁面結(jié)構(gòu)。 如果這里有些同學覺得比較難理解的話,可以回想一下,其實 JSX 就是 JavaScript 里面的對象,轉(zhuǎn)換一下角度,把上面的內(nèi)容翻譯成 JavaScript 對象的形式,上面的代碼就很好理解了。 同樣的,如果你能理解 JSX 元素就是 JavaScript 對象。那么你就可以聯(lián)想到,JSX 元素其實可以像 JavaScript 對象那樣自由地賦值給變量,或者作為函數(shù)參數(shù)傳遞、或者作為函數(shù)的返回值。 這里給把兩個 JSX 元素賦值給了 goodWord 和 badWord 兩個變量,然后把它們作為表達式插入的條件返回值。達到效果和上面的例子一樣,隨機返回不同的頁面效果呈現(xiàn)。 再舉一個例子: 這里我們定義了一個 renderGoodWord 函數(shù),這個函數(shù)接受兩個 JSX 元素作為參數(shù),并且隨機返回其中一個。在 render 方法中,我們把上面例子的兩個 JSX 元素傳入 renderGoodWord 當中,通過表達式插入把該函數(shù)返回的 JSX 元素插入到頁面上。 下一節(jié)中我們將介紹《React.js 小書 Lesson8 - 組件的組合、嵌套和組件樹》。 文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。 轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/89667.html...
render () {
const isGoodWord = true
return (
React 小書
{isGoodWord
? is good
: is not good
}
...
render () {
const isGoodWord = true
return (
React 小書
{isGoodWord
? is good
: null
}
...
render () {
const isGoodWord = true
const goodWord = is good
const badWord = is not good
return (
React 小書
{isGoodWord ? goodWord : badWord}
...
renderGoodWord (goodWord, badWord) {
const isGoodWord = true
return isGoodWord ? goodWord : badWord
}
render () {
return (
React 小書
{this.renderGoodWord(
is good,
is not good
)}
摘要:上面的代碼小書經(jīng)過編譯以后會變成小書會構(gòu)建一個對象里描述你結(jié)構(gòu)的信息,包括標簽名屬性還有子元素等。第二個原因是,有了這樣一個對象。負責把這個用來描述信息的對象變成元素,并且渲染到面上。下一節(jié)中我們將介紹小書組件的方法。 React.js 小書 Lesson6 - 使用 JSX 描述 UI 信息 本文作者:胡子大哈本文原文:http://huziketang.com/books/rea...
摘要:我們把將組件渲染,并且構(gòu)造元素然后塞入頁面的過程稱為組件的掛載這個定義請好好記住。掛載的時候,會在組件的之前調(diào)用,在元素塞入頁面以后調(diào)用。下一節(jié)中我們將介紹小書掛載階段的組件生命周期二。 React.js 小書 Lesson18 - 掛載階段的組件生命周期(一) 本文作者:胡子大哈本文原文:http://huziketang.com/books/react/lesson18 轉(zhuǎn)載請注...
摘要:小書最后頁面會顯示內(nèi)容組件可以和組件組合在一起,組件內(nèi)部可以使用別的組件。當頁面結(jié)構(gòu)復雜起來,有許多不同的組件嵌套組合的話,組件樹會相當?shù)膹碗s和龐大。下一節(jié)中我們將介紹小書事件監(jiān)聽。 React.js 小書 Lesson8 - 組件的組合、嵌套和組件樹 本文作者:胡子大哈本文原文:http://huziketang.com/books/react/lesson8 轉(zhuǎn)載請注明出處,保留...
摘要:最后抽離出來了一個類,可以幫助我們更好的做組件化。一個組件有自己的顯示形態(tài)上面的結(jié)構(gòu)和內(nèi)容行為,組件的顯示形態(tài)和行為可以由數(shù)據(jù)狀態(tài)和配置參數(shù)共同決定。接下來我們開始正式進入主題,開始正式介紹。下一節(jié)鏈接直達小書基本環(huán)境安裝 React.js 小書 Lesson4 - 前端組件化(三):抽象出公共組件類 本文作者:胡子大哈本文原文:http://huziketang.com/books...
摘要:一個組件的顯示形態(tài)由多個狀態(tài)決定的情況非常常見。我們順利地消除了手動的操作。非一般的暴力,因為每次都重新構(gòu)造新增刪除元素,會導致瀏覽器進行大量的重排,嚴重影響性能。下一節(jié)小書前端組件化三抽象出公共組件類我們把這個通用模式抽離到一個類當中。 React.js 小書 Lesson3 - 前端組件化(二):優(yōu)化 DOM 操作 本文作者:胡子大哈本文原文:http://huziketang....
閱讀 3478·2021-09-08 10:46
閱讀 1189·2019-08-30 13:17
閱讀 2369·2019-08-30 13:05
閱讀 1212·2019-08-29 15:29
閱讀 2889·2019-08-29 11:31
閱讀 543·2019-08-26 12:13
閱讀 1537·2019-08-26 11:42
閱讀 1846·2019-08-23 18:37