国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

React 開(kāi)發(fā)你一定要知道

wizChen / 2597人閱讀

摘要:組件的的單向數(shù)據(jù)流,主要的流動(dòng)管道就是,本身是不可變的。是上的特殊屬性在常規(guī)的數(shù)據(jù)流之外強(qiáng)制修改子元素被修改的可以是組件實(shí)例,或者一個(gè)元素可以在元素上和類組件上添加,組件在加載時(shí)將元素傳入的回調(diào),在或者這些生命周期前執(zhí)行。

JSX 基本語(yǔ)法
1.定義標(biāo)簽時(shí)只允許被一個(gè)標(biāo)簽包裹
const component = nameage

2.標(biāo)簽一定要閉合


3.DOM元素屬性class和for
class屬性改為className   
for屬性改為htmlFor 4.自定義html屬性,要使用data-前綴
5.屬性值需要使用表達(dá)式,只要用{}替換""即可 const person = 6.html轉(zhuǎn)義 React會(huì)將所有要顯示到DOM的字符串轉(zhuǎn)義,防止XSS react提供了dangerouslySetInnerHTML屬性,謹(jǐn)慎使用
React 數(shù)據(jù)流

在React中,數(shù)據(jù)是自頂向下單向流動(dòng)的,即從父組件到子組件,這條原則讓組件之間的關(guān)系變的簡(jiǎn)單且可預(yù)測(cè)。state和props是React組件中重要的概念,如果頂層組件初始化props,那么React會(huì)向下遍歷整棵組件樹(shù),重新嘗試渲染所有相關(guān)的子組件。而state只關(guān)心每個(gè)組件自己內(nèi)部的狀態(tài),這些狀態(tài)只能在組件內(nèi)部改變,把組件看成一個(gè)函數(shù),那么它接受了props作為參數(shù),內(nèi)部由state作為函數(shù)的內(nèi)部參數(shù),返回一個(gè)Virtual DOM的實(shí)現(xiàn)。

組件的state
組件的state是組件的內(nèi)部狀態(tài),state的變化最終將反映到組建UI的變化,我們?cè)诮M件的構(gòu)造方法constructor中通過(guò)this.state定義組件的初始狀態(tài),并通過(guò)this.setState方法改變組件狀態(tài)(也是改變組件狀態(tài)的唯一方式),進(jìn)而組件的UI也會(huì)隨之重新渲染。

1.setState是一個(gè)異步方法,一個(gè)生命周期內(nèi)所有的setState方法會(huì)合并操作。

組件的props

1.React的單向數(shù)據(jù)流,主要的流動(dòng)管道就是props,
props本身是不可變的。當(dāng)我們?cè)噲D改變props的原始值時(shí),
React會(huì)報(bào)出類型錯(cuò)誤警告,組件的props一定來(lái)自于默認(rèn)屬性或者通過(guò)父組件傳遞而來(lái)。

2.React為props同樣提供了默認(rèn)的配置。
通過(guò)defaultProps靜態(tài)變量的方式來(lái)定義,當(dāng)組件被調(diào)用的時(shí)候,默認(rèn)值保證渲染后始終有值。
    static defaultProps = {
        classPrefix: "tabs",
        onChange: () => {}    
    }
    
3.proTotypes用于規(guī)范props的類型與必需的狀態(tài)。
如果組件定義了propTypes,那么在開(kāi)發(fā)環(huán)境下,就會(huì)對(duì)組件的props的值類型作檢查。
    static propTypes = {
        classPrefix: propTypes.String
    }
    
4.子組件的props,在React中有一個(gè)重要且內(nèi)置的props---children,
它代表組件的子組件集合,children可以根據(jù)傳入子組件的數(shù)量來(lái)決定是否是數(shù)組類型。

5.用function prop與父組件通訊,
父組件可以通過(guò)子組件的prop傳遞給子組件一個(gè)回調(diào)函數(shù),
子組件需要改變父組件數(shù)據(jù)時(shí),調(diào)用這個(gè)回調(diào)函數(shù)即可。
React生命周期

組件從創(chuàng)建到被銷毀的過(guò)程稱為組件的生命周期。通常,React組件的生命周期可以被分為三個(gè)階段:掛載階段、更新階段、卸載階段

1.掛載階段

constructor
這是es6 class的構(gòu)造方法,組件被創(chuàng)建時(shí),
會(huì)首先調(diào)用組件的構(gòu)造方法,
這個(gè)構(gòu)造方法接收一個(gè)props參數(shù),props是父組件中傳入的屬性對(duì)象

componentWillMount
該方法在組件被掛載到DOM前調(diào)用,且只會(huì)被調(diào)用一次

render
這是定義組件時(shí)唯一必要的方法,該方法根據(jù)props和state返回一個(gè)react元素
,這個(gè)元素用于描述組件的UI,注意render并不負(fù)責(zé)組件的實(shí)際渲染工作,
它只是返回一個(gè)UI的描述,真正渲染出頁(yè)面的DOM的工作有React負(fù)責(zé)。

componentDidMount 
組件被掛載到DOM后調(diào)用,且只會(huì)被調(diào)用一次

2.更新階段

componentWillReceiveProps(nextProps)
這個(gè)方法只在props引起的組件更新過(guò)程中,才會(huì)被調(diào)用。
state引起的組件更新并不會(huì)觸發(fā)該方法的執(zhí)。

shouldComponentUpdate(nextProps, nextState)
這個(gè)方法決定組件是否繼續(xù)執(zhí)行更新過(guò)程,當(dāng)方法返回true時(shí)(默認(rèn)返回值),
組件會(huì)繼續(xù)更新過(guò)程。返回false時(shí),組件更新過(guò)程停止。

componentWillUpdate(nextProps, nextState)
該方法在組件render調(diào)用前調(diào)用。

render
該方法根據(jù)props和state返回一個(gè)react元素,如掛載階段

componentDidUpdate(preProps, preState)
組件更新后被調(diào)用,可以作為操作DOM的地方。兩個(gè)參數(shù)分別是組件更新前的props和state

3.卸載階段

componentWillUnmount
組件被卸載之前調(diào)用,此處可以用于清除定時(shí)器等,取消監(jiān)聽(tīng)事件等,避免引起內(nèi)存泄露。
React refs

ref是react上的特殊屬性
在常規(guī)的數(shù)據(jù)流之外強(qiáng)制修改子元素
被修改的可以是react組件實(shí)例,或者一個(gè)dom元素
可以在dom元素上和類組件上添加ref,react組件在加載時(shí)將dom元素傳入ref的回調(diào),在componentDidMount 或者componentDidUpdate 這些生命周期前執(zhí)行。

1.dom元素上添加ref

...
handleClick(){
    this.nameInput.focus();
}

render(){
    return(
        
{this.nameInput = input;}}
); }

2.react組件上添加ref

// App.js
otherFunction(){
    this.pager.changePage(5);
}
....
render(){
    return(
        {this.pager = page;}} />
    );
}

// Pager.js
...
changePage(page){
    this.setState({
        page : page
    });
}
...
// 在父組件中使用ref給某一子組件傳值,并且子組件調(diào)用setState修改自身的狀態(tài),
// 該子組件會(huì)重新渲染一次,父組件中的其他組件不會(huì)重新render

3.ref和函數(shù)式組件

function MyTest(){
    let textInput = null;

    function handleClick(){
        textInput.focus();
    }

    return(){
        
{textInput=input}/>
} }

子組件對(duì)父組件暴露dom節(jié)點(diǎn)
// App.js
...
render(){

return(
     this.inputRef = el; } />
);

}

// Sub.js
...
render(){

return(){
    
}

}

React forceUpdate

默認(rèn)情況下,當(dāng)組件的 state 或 props 改變時(shí),組件將重新渲染。 如果你的 render() 方法依賴于一些其他數(shù)據(jù),你可以告訴 React 組件需要通過(guò)調(diào)用 forceUpdate() 重新渲染。
調(diào)用 forceUpdate() 會(huì)導(dǎo)致組件跳過(guò) shouldComponentUpdate() ,直接調(diào)用 render()。 這將觸發(fā)子組件的正常生命周期方法,包括每個(gè)子組件的 shouldComponentUpdate() 方法。
forceUpdate就是重新render。有些變量不在state上,但是你又想達(dá)到這個(gè)變量更新的時(shí)候,刷新render;或者state里的某個(gè)變量層次太深,更新的時(shí)候沒(méi)有自動(dòng)觸發(fā)render。這些時(shí)候都可以手動(dòng)調(diào)用forceUpdate自動(dòng)觸發(fā)render

// Sub.js
class Sub extends React.Component{
    construcotr(){
        super();
        this.name = "tom";
    }
    refChangeName(name){
        this.name = name;
        this.forceUpdate(); 
    }
    render(){
        return (
{this.name}
); } } // App.js class App extends React.Component{ handleClick(){ this.subRef.refChangeName("jack"); } render(){ return (
{this.subRef = sub;}} />
); } }

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/96600.html

相關(guān)文章

  • 關(guān)于React的一些小知識(shí)

    摘要:關(guān)于的一些小知識(shí)這里搜集了幾個(gè)關(guān)于的零散知識(shí),有些雖然知道了也不一定能幫你寫(xiě)出更好的代碼,但能夠擴(kuò)展一下知識(shí)。被設(shè)置為而不是是由于早期的會(huì)在某些情況下刪除基本類型的屬性。 關(guān)于React的一些小知識(shí) 這里搜集了幾個(gè)關(guān)于react的零散知識(shí),有些雖然知道了也不一定能幫你寫(xiě)出更好的代碼,但能夠擴(kuò)展一下知識(shí)。 以下全部來(lái)自于https://overreacted.io,需要更詳細(xì)解釋的可以去...

    tuomao 評(píng)論0 收藏0
  • 玩轉(zhuǎn) React(一)- 前言

    摘要:本人計(jì)劃編寫(xiě)一個(gè)針對(duì)中初級(jí)前端開(kāi)發(fā)者學(xué)習(xí)的系列教程玩轉(zhuǎn)。使用的原因是新的語(yǔ)言規(guī)范開(kāi)發(fā)效率更高代碼更優(yōu)雅,尤其是基于開(kāi)發(fā)的項(xiàng)目。其次也是目前特別流行的一個(gè)前端框架,截止目前,上有將近萬(wàn),國(guó)內(nèi)一二線互聯(lián)網(wǎng)公司都有深度依賴開(kāi)發(fā)的項(xiàng)目。 本人計(jì)劃編寫(xiě)一個(gè)針對(duì)中初級(jí)前端開(kāi)發(fā)者學(xué)習(xí) React 的系列教程 - 《玩轉(zhuǎn) React》。 文章更新頻率:每周 1 ~ 2 篇。 目錄 玩轉(zhuǎn) React(...

    waltr 評(píng)論0 收藏0
  • React 深入系列2:組件分類

    摘要:無(wú)狀態(tài)組件和有狀態(tài)組件無(wú)狀態(tài)組件和有狀態(tài)組件,劃分依據(jù)是根據(jù)組件內(nèi)部是否維護(hù)。展示型組件和容器型組件展示型組件和容器型組件,劃分依據(jù)是根據(jù)組件的職責(zé)。 文:徐超,《React進(jìn)階之路》作者授權(quán)發(fā)布,轉(zhuǎn)載請(qǐng)注明作者及出處 React 深入系列2:組件分類 React 深入系列,深入講解了React中的重點(diǎn)概念、特性和模式等,旨在幫助大家加深對(duì)React的理解,以及在項(xiàng)目中更加靈活地使...

    Karrdy 評(píng)論0 收藏0
  • 使用React 應(yīng)當(dāng)注意的幾個(gè)地方

    摘要:都會(huì)造成錯(cuò)誤,注意一定一定嚴(yán)格的用,所以我建議直接復(fù)制我的。因?yàn)橛玫脑捤麜?huì)轉(zhuǎn)義代碼,寫(xiě)不寫(xiě)其實(shí)一個(gè)樣。不可避免的,構(gòu)建肯定是要用到的。這個(gè)時(shí)候一般用的是在外面保存然后里面調(diào)用第二個(gè)坑更隱蔽。 目標(biāo)人群 獻(xiàn)給熟悉基礎(chǔ)的React語(yǔ)法的剛接觸React的同學(xué)~ 如果你已經(jīng)寫(xiě)過(guò)半年以上的React那也不用看了,畢竟我水平并不高 Whats React React 是一個(gè)不存在的網(wǎng)絡(luò)公司Fac...

    高璐 評(píng)論0 收藏0
  • typescript - 一種思維方式

    摘要:怎么影響了我的思考方式對(duì)前端開(kāi)發(fā)者來(lái)說(shuō),能強(qiáng)化了面向接口編程這一理念。使用的過(guò)程就是在加深理解的過(guò)程,確實(shí)面向接口編程天然和靜態(tài)類型更為親密。 電影《降臨》中有一個(gè)觀點(diǎn),語(yǔ)言會(huì)影響人的思維方式,對(duì)于前端工程師來(lái)說(shuō),使用 typescript 開(kāi)發(fā)無(wú)疑就是在嘗試換一種思維方式做事情。 其實(shí)直到最近,我才開(kāi)始系統(tǒng)的學(xué)習(xí) typescript ,前后大概花了一個(gè)月左右的時(shí)間。在這之前,我也在...

    CKJOKER 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<