摘要:系列一初識(shí)系列二組件的和系列三組件的生命周期是推出的一個(gè)庫(kù),它的口號(hào)就是用來(lái)創(chuàng)建用戶(hù)界面的庫(kù),所以它只是和用戶(hù)界面打交道,可以把它看成中的視圖層。系列一初識(shí)系列二組件的和系列三組件的生命周期
React系列---React(一)初識(shí)React
React系列---React(二)組件的prop和state
React系列---React(三)組件的生命周期
React是Facebook推出的一個(gè)JavaScript庫(kù),它的口號(hào)就是“用來(lái)創(chuàng)建用戶(hù)界面的JavaScript庫(kù)”,所以它只是和用戶(hù)界面打交道,可以把它看成MVC中的V(視圖)層。
React三大特性 組件React的一切基于組件。使用React,唯一要關(guān)心的就是構(gòu)建組件。各個(gè)組件有各自的狀態(tài),狀態(tài)變更時(shí),會(huì)自動(dòng)重新渲染組件。組件特性也是Web前端發(fā)展的趨勢(shì)。
一個(gè)Profile組件的例子:
// Profile.jsx import React from "react"; export default Class Profile extends React.Component { render() { return () } }Hi, I am {this.props.name}
其他組件中,可以像HTML標(biāo)簽一樣引用它:
import Profile from "./profile"; export default function(props) { return (JSX) }
上面的render方法中,有一種直接把HTML嵌套在JS中的寫(xiě)法,被稱(chēng)作JSX。這種語(yǔ)法結(jié)合了JavaScript和HTML的優(yōu)點(diǎn),即可以像平常一樣使用HTML,也可以在里面嵌套JavaScript語(yǔ)法,運(yùn)行時(shí),Babel等工具會(huì)將JSX編譯成JavaScript語(yǔ)法。
用HTML這種語(yǔ)義化的方式代替寫(xiě)JavaScript,總讓人愜意許多。
Virtual DOMReact的設(shè)計(jì)中,開(kāi)發(fā)者基本上無(wú)需操縱實(shí)際的DOM節(jié)點(diǎn),每個(gè)React組件都是用Virtual DOM渲染的,可以看成是一種用JavaScript實(shí)現(xiàn)的內(nèi)存DOM抽象。React在Virtual DOM上實(shí)現(xiàn)了一個(gè)Diff算法,渲染組件時(shí),會(huì)高效的找出變更的節(jié)點(diǎn),刷新到實(shí)際DOM上。
理解React特性 理解Virtual DOMWeb頁(yè)面是由一個(gè)個(gè)HTML元素嵌套組合而成的。當(dāng)使用JavaScript來(lái)描述這些元素時(shí),這些元素可以簡(jiǎn)單地被表示成純粹的JSON對(duì)象的。
比如現(xiàn)在需要描述一個(gè)按鈕(button),我們都知道,HTML語(yǔ)法如下:
其中包括了元素的類(lèi)型和屬性。我們可以用這樣一個(gè)JSON對(duì)象去表達(dá)這個(gè)按鈕:
{ type: "button", props: { className: "btn btn-blue", children: { type: "em", props: { children: "Confirm" } } } }
這即是Virtual DOM的思想:將實(shí)際DOM節(jié)點(diǎn)抽象為內(nèi)存中的JavaScript對(duì)象。
理解組件當(dāng)然,我們可以很方便地封裝上述button元素,得到一種構(gòu)建按鈕的公共方法:
const Button => ({ color, text }) { return { type: "button", props: { className: `btn btn-${color}`, children: { type: "em", props: { children: text, }, }, }, }; }
當(dāng)我們要生成DOM元素中具體按鈕時(shí),就可以調(diào)用Button({color:"blue", text:"Confirm"})來(lái)創(chuàng)建。
仔細(xì)思考這個(gè)過(guò)程可以發(fā)現(xiàn),Button方法其實(shí)也可以作為元素存在(上面的Profile組件,就是這一回事),方法名對(duì)應(yīng)了DOM元素類(lèi)型,參數(shù)對(duì)應(yīng)了DOM元素屬性,這樣構(gòu)建的元素就是React的組件元素。JSON結(jié)構(gòu)描述這個(gè)組件的話(huà),大概是這樣:
{ type: Button, props: { color: "blue", children: "Confirm" } }
這也是React的核心思想之一。因?yàn)橛泄驳谋磉_(dá)方法,我們就可以讓元素們彼此嵌套混合。這些層層封裝的React組件元素,最終遞歸渲染出完整的DOM樹(shù)。
React系列---React(一)初識(shí)React
React系列---React(二)組件的prop和state
React系列---React(三)組件的生命周期
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/83601.html
摘要:組件裝載過(guò)程裝載過(guò)程依次調(diào)用的生命周期函數(shù)中每個(gè)類(lèi)的構(gòu)造函數(shù),創(chuàng)造一個(gè)組件實(shí)例,當(dāng)然會(huì)調(diào)用對(duì)應(yīng)的構(gòu)造函數(shù)。組件需要構(gòu)造函數(shù),是為了以下目的初始化,因?yàn)樯芷谥腥魏魏瘮?shù)都有可能訪問(wèn),構(gòu)造函數(shù)是初始化的理想場(chǎng)所綁定成員函數(shù)的環(huán)境。 React系列---React(一)初識(shí)ReactReact系列---React(二)組件的prop和stateReact系列---之React(三)組件的生...
摘要:給賦值也是構(gòu)造函數(shù)的工作之一。在的構(gòu)造函數(shù)中,還給兩個(gè)成員函數(shù)綁定了當(dāng)前的執(zhí)行環(huán)境,因?yàn)榉绞絼?chuàng)建的組件并不自動(dòng)給我們綁定到當(dāng)前實(shí)例對(duì)象。我們可以利用的功能,避免判斷邏輯這種充斥在構(gòu)造函數(shù)之中,讓代碼更優(yōu)。 React系列---React(一)初識(shí)ReactReact系列---React(二)組件的prop和stateReact系列---React(三)組件的生命周期 組件是React...
摘要:初識(shí)依稀記得那年參加線(xiàn)下活動(dòng),第一次聽(tīng)說(shuō)這個(gè)詞語(yǔ),當(dāng)時(shí)的主講人是郭達(dá)峰,他播放了一個(gè)關(guān)于及的性能對(duì)比視頻。合成事件會(huì)以事件委托的方式綁定到組件最上層,并且在組件卸載的時(shí)候自動(dòng)銷(xiāo)毀綁定的事件。 初識(shí)React 依稀記得2015那年參加線(xiàn)下活動(dòng),第一次聽(tīng)說(shuō)React這個(gè)詞語(yǔ),當(dāng)時(shí)的主講人是郭達(dá)峰,他播放了一個(gè)關(guān)于ember、angular及react的性能對(duì)比視頻: React.js Co...
摘要:定義一個(gè)組件可以在其他組件中調(diào)用這個(gè)組件調(diào)用組件劉宇組件插入內(nèi)容在上面的案例中可以看到吧寫(xiě)到當(dāng)中,這種寫(xiě)法稱(chēng)為。 React初識(shí) React是Facebook推出的一個(gè)javascript庫(kù)(用來(lái)創(chuàng)建用戶(hù)界面的Javascript庫(kù)),所以他只是和用戶(hù)的界面打交道,你可以把它看成MVC中的V(視圖)這一層。 組件 React的一切都是基于組件的。web世界的構(gòu)成是基于各種HTML標(biāo)簽的...
閱讀 3030·2021-11-22 12:06
閱讀 610·2021-09-03 10:29
閱讀 6566·2021-09-02 09:52
閱讀 2027·2019-08-30 15:52
閱讀 3422·2019-08-29 16:39
閱讀 1198·2019-08-29 15:35
閱讀 2071·2019-08-29 15:17
閱讀 1430·2019-08-29 11:17