React第二天學(xué)習(xí)

內(nèi)容:props辱姨、狀態(tài)機憔鬼、事件伞剑、
     組件通信洋只、模擬表單雙向綁定

一样眠、組件的props

1.類組件

定義:

import React from 'react'
class Home extends React.Component{
    constructor(){
        super();
        console.log("構(gòu)造函數(shù)先執(zhí)行")
    }
    //渲染頁面的鉤子函數(shù)
    render(){
        console.log("渲染函數(shù)執(zhí)行")
        return(
            <div>
                <h2>這是一個es6類定義的組件</h2>
            </div>
        )
    }
}
export default Home;

擁有構(gòu)造函數(shù)等生命周期函數(shù)(業(yè)務(wù)組件/狀態(tài)組件)

類組件中可以定義很多個函數(shù)割笙、初始數(shù)據(jù)等权烧,通過this.props接收父組件傳遞的數(shù)據(jù)

2.函數(shù)組件

定義:

import React from 'react'
var Movie = (props)=>{
    return(
        <div>
            <h3>這是一個函數(shù)式組件</h3>
        </div>
    )
}
export default Movie;

它沒有生命周期等函數(shù)(無狀態(tài)組件/木偶組件)、沒有狀態(tài)機伤溉。

函數(shù)組件要接收父組件傳遞的數(shù)據(jù)需要通過函數(shù)的形參來接收般码。

二、狀態(tài)機

state是react中內(nèi)置的狀態(tài)管理器乱顾,設(shè)置一些初始數(shù)據(jù)(數(shù)據(jù)格式是對象)板祝。

setState,react中不建議我們直接通過state.變量名來進行賦值走净,即使賦值成功券时,但是頁面上的數(shù)據(jù)不會發(fā)生變化(沒有重新調(diào)用render函數(shù)),推薦我們使用setState方法來改變狀態(tài)機中的數(shù)據(jù)伏伯。

setState會把新的數(shù)據(jù)合并到原來的數(shù)據(jù)中橘洞,重新調(diào)用render方法。

三说搅、事件

1.事件綁定

(1)es5方式進行綁定

<button onClick={ this.自定義函數(shù)名 }

注意:this.自定義函數(shù)名()這種方式的寫法炸枣,指定的函數(shù)會自動執(zhí)行

保持this指向:

<button onClick={ this.自定義函數(shù)名.bind(this) }

(2)es6方式進行綁定

<button onClick={ ()=>this.addNum() }>es6-保持this指向</button><br/>
<button onContextMenu={ (e)=>this.handle1(e) }>es6-保持this指向-事件</button>

2.傳遞參數(shù)

(1)es5傳遞參數(shù)

①事件

不需要顯示的在函數(shù)中進行傳遞,在定義函數(shù)的形參中直接使用即可

②額外參數(shù)

如果要在函數(shù)中繼續(xù)獲取事件和其他參數(shù)弄唧,那么在使用bind時應(yīng)該加上this适肠,然后再傳遞其他參數(shù)。

<button onContextMenu={ this.handle1.bind() }>es5--事件--無參數(shù)</button>
<button onClick={ this.handle2.bind(this,'haha') }>es5--事件--有參數(shù)</button>

es5傳遞參數(shù)的方式候引,在定義函數(shù)時侯养,形參中的事件參數(shù)應(yīng)該放到所有普通參數(shù)的最后。

(2)es6傳遞參數(shù)

<button onClick={ (e)=>this.handle2('hehe',e) }>es6-保持this指向-事件-有參數(shù)</button>

es6要獲取事件和其他額外參數(shù)時澄干,實參傳遞和形參接收的順序是一致的逛揩。

四柠傍、組件通信

1.父子組件

在父組件上使用子組件時,通過自定義屬性名=屬性值進行數(shù)據(jù)的傳遞

在子組件中息尺,如果是類組件通過this.props.自定義屬性名來接收數(shù)據(jù)

? 如果是函數(shù)組件通過形參props.自定義屬性名來接收數(shù)據(jù)

父組件:

import React,{ Component } from 'react'
//引入子組件
import Child from './Child'
export default class Parent extends Component{
    render(){
        return(
            <div>
                <h1>這是一個父組件</h1>
                <Child gift="寶馬"></Child>
            </div>
        )
    }
}

子組件:

import React from 'react'
var Child = (props)=>{
    return(
        <div>
            <h2>這是一個子組件携兵,這是父組件給的禮物:{ props.gift }</h2>
        </div>
    )
}
export default Child;

2.子父組件

在父組件使用子組件時疾掰,除了可以傳遞普通數(shù)據(jù)搂誉,還可以傳遞事件。

父組件:

state = {
        msg:''
    }
    setMsg(e){
        console.log('此事件被子組件執(zhí)行了',e)
        this.setState({
            msg:e
        })
    }
    render(){
        return(
            <div>
                <h1>這是一個父組件</h1>
                <Child gift="寶馬" toParent={ (e)=>this.setMsg(e) }></Child>
                <hr/>
                <h1>這是子組件發(fā)送過來的數(shù)據(jù):{ this.state.msg }</h1>
            </div>
        )
    }

子組件:

render(){
    return(
        <div>
            <h2>這是一個子組件静檬,這是父組件給的禮物:{ this.props.gift }</h2>
            <button onClick={ ()=>this.props.toParent('口罩100個') }>發(fā)送數(shù)據(jù)</button>
        </div>
    )
} 

3.DOM節(jié)點操作

ref

(1)字符串

可以給子組件設(shè)置一個ref屬性炭懊,然后可以通過this.refs.屬性名來獲取/設(shè)置子組件中的數(shù)據(jù)。

<Song ref="mySong"></Song>

可以通過this.refs.mySong來獲取到組件拂檩。

(2)回調(diào)函數(shù)

可以給子組件設(shè)置一個ref屬性侮腹,它的屬性值不是字符串,而是一個函數(shù)(自動執(zhí)行)稻励「缸瑁可以把子組件當(dāng)成參數(shù)進行傳遞,然后就可以對組件中的數(shù)據(jù)進行獲取或者修改望抽。

<Song ref={ (el)=>this.getChild2(el) }></Song>

回調(diào)函數(shù)的寫法不會在this.refs存在子組件加矛。

不推薦直接使用ref,只有萬不得已才去使用煤篙。

五斟览、模擬表單數(shù)據(jù)雙向綁定

六、初始化項目失敗

[圖片上傳失敗...(image-f0df1e-1582630015203)]

解決辦法:

在命令行中執(zhí)行命令:npm cache clean --force 清除緩存

然后再重新執(zhí)行初始化操作

七辑奈、作業(yè)

用react實現(xiàn)用戶注冊苛茂、登錄界面,點擊注冊或者登錄按鈕時獲取到用戶輸入的內(nèi)容

表格頁面

(可以使用bootstrap鸠窗,樣式要好看)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末妓羊,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子稍计,更是在濱河造成了極大的恐慌侍瑟,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丙猬,死亡現(xiàn)場離奇詭異涨颜,居然都是意外死亡,警方通過查閱死者的電腦和手機茧球,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門庭瑰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人抢埋,你說我怎么就攤上這事弹灭《皆荩” “怎么了?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵穷吮,是天一觀的道長逻翁。 經(jīng)常有香客問我,道長捡鱼,這世上最難降的妖魔是什么八回? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮驾诈,結(jié)果婚禮上缠诅,老公的妹妹穿的比我還像新娘。我一直安慰自己乍迄,他們只是感情好管引,可當(dāng)我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著闯两,像睡著了一般褥伴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上漾狼,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天重慢,我揣著相機與錄音,去河邊找鬼邦投。 笑死伤锚,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的志衣。 我是一名探鬼主播屯援,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼念脯!你這毒婦竟也來了狞洋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤绿店,失蹤者是張志新(化名)和其女友劉穎吉懊,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體假勿,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡借嗽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了转培。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片恶导。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖浸须,靈堂內(nèi)的尸體忽然破棺而出惨寿,到底是詐尸還是另有隱情邦泄,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布裂垦,位于F島的核電站顺囊,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蕉拢。R本人自食惡果不足惜特碳,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望企量。 院中可真熱鬧测萎,春花似錦亡电、人聲如沸届巩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽恕汇。三九已至,卻和暖如春或辖,著一層夾襖步出監(jiān)牢的瞬間瘾英,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工颂暇, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留缺谴,地道東北人。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓耳鸯,卻偏偏與公主長得像湿蛔,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子县爬,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 作為一個合格的開發(fā)者阳啥,不要只滿足于編寫了可以運行的代碼。而要了解代碼背后的工作原理财喳;不要只滿足于自己的程序...
    六個周閱讀 8,449評論 1 33
  • 前言 開發(fā)一個React應(yīng)用,更多的是在編寫組件,而React組件最小的單位就是React元素,編寫組件的最大的好...
    itclanCoder閱讀 1,153評論 0 1
  • 目前察迟,react組件有三種寫法,分別是es5的createClass寫法耳高,es6的class寫法扎瓶,以及statel...
    ZoomFunc閱讀 1,658評論 0 1
  • 40、React 什么是React泌枪?React 是一個用于構(gòu)建用戶界面的框架(采用的是MVC模式):集中處理VIE...
    萌妹撒閱讀 1,017評論 0 1
  • 『咚概荷。 有文化和有知識應(yīng)該是兩碼事。 大多數(shù)時候工闺,對于我來說乍赫,知識只是用來攻擊無知的武器而已瓣蛀,用來體現(xiàn)自身的優(yōu)越工...
    綿花不白閱讀 293評論 0 0