React基礎(chǔ)

React如此強大的原因之一就在于它推行聲明式編程范式


1.

理解該問題的簡方式是:命令式編程描述代碼如何工作,而

聲明式編程則表明想要實現(xiàn)什 么目的。

與命令式世界極其相似的一個真實示例就是去酒吧喝啤酒并對服務(wù)員做出以下指示:

? ?從架子上拿一個玻璃杯;

? ? 將杯子放到酒桶前; ?

? ? 按下酒桶開關(guān),將杯子倒?jié)M; ??

? ? 把杯子遞給我。

但在聲明式世界中,你只需要說:“請給我一杯啤酒?!?/p>

按聲明式方式點一杯啤酒,需要假設(shè)服務(wù)員知道如何提供啤酒,這是聲明式編程工作原理的 一個重要方面。

2.

React 遵循聲明式范式,因此

無須告訴它如何與 DOM 交互。你只要聲明希望 在屏幕上看到的內(nèi)容,

React就會完成剩下的工作

3.

開發(fā) React的工程師一直在社區(qū)中推廣另一個概念:

將樣式的邏輯也放到組件中。

這 個概念頗具爭議,而且很難被接受。

基礎(chǔ)


4.常見誤解

一種常見的觀點認為,React是一個龐大的技術(shù)和工具集,要想使用它,就必須與包管理器、 轉(zhuǎn)譯器、模塊打包器以及無數(shù)的庫打交道。?

但 React其實是一個很小的庫。像之前使用 jQuery或 Backbone 那樣,我們可以在任何頁面(甚至 JSFiddle)中使用它:只要在關(guān)閉主體元素前引入腳本即可。?

實際需要引入兩個腳本,因為 React拆分成了兩個包核心包 react 實現(xiàn)了 React庫的核心 特性,react-dom 則包含了與瀏覽器相關(guān)的所有特性。這樣做的理由是,核心包可以用于支持 不同的目標平臺,如瀏覽器中的 React DOM以及移動設(shè)備上的 React Native。

開發(fā)過程需要什么,引入相應(yīng)的什么包? 或 庫 或 管理器

5.react基礎(chǔ)原則

5.1 react界面完全由數(shù)據(jù)驅(qū)動

5.2 react中一切都是組件

5.3 props是react組件間通訊的基本方式

6.組件的地位

組件為react里的一等公民,公民們用props交流,當跨越多級聊天,全局變量?危害極大

業(yè)界往往采用第三方數(shù)據(jù)管理工具-----Redux與Mobx等

但react也提供了自己的跨組件通訊方式------Context

7.react組件用法

React 提供了兩種方式來聲明組件,一種是函數(shù)式,一種是類式。?

函數(shù)式很簡單,就像我們平常寫函數(shù)一樣,接受一個參數(shù)作為輸入,然后進行相應(yīng)的輸出,只不過它輸出的jsx.

// welcome 函數(shù)式組件。

function Welcome(props) {

? ? ? ? ?return <h1> {props.name}</h1>

}


類式,則是利用es6 class 語法, 我們所有的組件都繼承自React.Component.

classWelcomeextendsReact.Component{

? ?render() {

? ? ? ? ?return? <h1> {this.props.name}</h1>? }

}


聲明組件以后,怎么使用這個組件? 如果組件還要接受參數(shù),怎樣進行參數(shù)傳遞? 把組件想成一個html標簽就可以了,html標簽怎么使用,組件就怎么使用。html標簽有兩種使用方式,一種是 img 自閉合標簽<img />,一種是 h1之類的雙標簽<h1></h1>。同理,組件也有這兩種使用方式。傳參則像是給html標簽寫屬性,屬性名 = 屬性值,如name =”Jason” , 組件內(nèi)部的props 則把這些屬性組合在一起形成對象{name: “jason”}

<Welcome name="Jason" /> // 標簽一定要閉合,就是后面的/不能忘記

<Welcome></Welcome>

  使用組件,它返回了 <h1> Jason</h1>, 很像html 代碼,其實它是 React 所說的虛擬DOM,? 并不是真實的DOM, 我們要把虛擬DOM 渲染成真實的DOM,才能顯示到頁面中,這需要用到ReactDOM的render 方法,它接受的第一個參數(shù),就是虛擬DOM, 第二個參數(shù)就是我們要把DOM 渲染到什么地方。

ReactDOM.render(

? ? <Welcome name="Jason" />,

? ? document.getElementById('root')

);

8.屬性-pros用法

Props是屬性。屬性不可以修改,也就是屬性不可以由組件進行修改,組件的屬性是由父組件傳遞過來的,相當于組件在出生的時候就存在的。

為什么要用pros?

我的理解就是從外部傳入一個值,這個值可以是字符串,數(shù)組,對象等,然后根據(jù)組件的功能來使用這個值或者顯示這個值,這是自定義組件內(nèi)部做的事情。簡單來說,就是通過pros傳遞值,然后去使用它。但是這個值不能被修改。

9.狀態(tài)-state的使用

使用this.state來引用,狀態(tài)指的是事物所處的狀況。?

由事物自行處理、不斷變化的。它是事物的私有屬性。狀態(tài)是可以改變的。?

為什么要用狀態(tài)??

在組件本身維護了一個私有的狀態(tài),當狀態(tài)發(fā)生改變時,能及時更新狀態(tài),及時渲染改變后的頁面。

狀態(tài)只和組件本身相關(guān),組件不能修改屬性。?

組件在運行時需要修改的數(shù)據(jù)就是狀態(tài)。

簡單來說就是:?

組件在運行時需要修改的數(shù)據(jù)就是狀態(tài)。?

屬性的核心要點就是不能修改!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容