React 父子組件通信

通訊是單向的侦铜,數(shù)據(jù)必須是由一方傳到另一方院塞。

1.父組件與子組件間的通信顿肺。

在 React 中戏溺,父組件可以向子組件通過傳 props 的方式,向子組件進(jìn)行通訊屠尊。



父組件 App.js

import React, { Component } from 'react';

import './App.css';

import Child from './child'

class App extends Component {
    constructor(props){
        super(props);
        this.state={
            msg:'父類的消息',
            name:'John',
            age:99
        }
    }

    callback=(msg,name,age)=>{
        // setState方法,修改msg的值,值是由child里面?zhèn)鬟^來的
        this.setState({msg});
        this.setState({name});
        this.setState({age});
    }

  render() {
    return (
      <div className="App">
        <p> Message: &nbsp;&nbsp;{this.state.msg}</p>
        <Child callback={this.callback} age={this.state.age} name={this.state.name}></Child>
      </div>
    );
  }
}

export default App;

父組件中旷祸,state里面有三個屬性,分別是msg讼昆,nameage托享,在子組件child中,如果想拿到父組件里面的屬性,就需要通過props傳遞闰围。

在 <Child></Child> 標(biāo)簽里面添加

name={this.state.name}  age={this.state.age}
寫成 
<Child name={this.state.name}  age={this.state.age}></Child>

nameage分別是你要傳遞的屬性赃绊。


子組件 ? Child

import React from "react";

class Child extends React.Component{
    constructor(props){
        super(props);
        this.state={
            name:'Andy',
            age:31,
            msg:"來自子類的消息"
        }
    }

    change=()=>{
        this.props.callback(this.state.msg,this.state.name,this.state.age);
    }

    render(){
        return(
            <div>
                <div>{this.props.name}</div>
                <div>{this.props.age}</div>
                <button onClick={this.change}>點(diǎn)擊</button>
            </div>
        )
    }
}

export default Child;

在子組件中,通過 {this.props.name} ?{this.props.age}就能拿到父組件里面的數(shù)據(jù)。

1.jpg

呈現(xiàn)在頁面上的就是這個樣子羡榴。

其中 John,99均來自于父組件App.js



2.子組件向父組件通信

子組件向父組件通訊碧查,同樣也需要父組件向子組件傳遞 props 進(jìn)行通訊,只是父組件傳遞的校仑,是作用域?yàn)楦附M件自身的函數(shù)忠售,子組件調(diào)用該函數(shù),將子組件想要傳遞的信息迄沫,作為參數(shù)稻扬,傳遞到父組件的作用域中。

上面例子中邢滑,在子組件Child中綁定了onClick事件腐螟。 調(diào)用this.change方法。

注意change函數(shù)采用了箭頭函數(shù)的寫法 change=()=>{}困后,目的是為了改變this的指向翎朱。使得在函數(shù)單獨(dú)調(diào)用的時候歉提,函數(shù)內(nèi)部的this依然指向child組件

如果不使用箭頭函數(shù)止喷,而是采用普通的寫法
change(){
}

則需要在 constructor中綁定this,
this.change=this.change.bind(this)

或者在onClick方法中綁定this,
onClick={this.change=this.change.bind(this)}

change方法中娜汁,通過props發(fā)送出去一個方法淤击,比如說叫callback方法逢艘,父組件中去接收這個方法估盘,callback={this.callback}喷市,然后在自身的callback函數(shù)中進(jìn)行一些列操作跌宛。

本例中酗宋,函數(shù)callback中就是通過調(diào)用 setState方法來改變值。

點(diǎn)擊按鈕后頁面顯示:


2.jpg



可以看到疆拘,我們既實(shí)現(xiàn)了通過props將父組件里面的數(shù)據(jù)傳遞給子組件的效果蜕猫,也實(shí)現(xiàn)了通過子組件按鈕點(diǎn)擊事件,將子組件里面的數(shù)據(jù)發(fā)送給父組件

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末哎迄,一起剝皮案震驚了整個濱河市回右,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌漱挚,老刑警劉巖翔烁,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異旨涝,居然都是意外死亡蹬屹,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來慨默,“玉大人秃踩,你說我怎么就攤上這事∫捣ぃ” “怎么了憔杨?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蒜胖。 經(jīng)常有香客問我消别,道長,這世上最難降的妖魔是什么台谢? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任寻狂,我火速辦了婚禮,結(jié)果婚禮上朋沮,老公的妹妹穿的比我還像新娘蛇券。我一直安慰自己,他們只是感情好樊拓,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布纠亚。 她就那樣靜靜地躺著,像睡著了一般筋夏。 火紅的嫁衣襯著肌膚如雪蒂胞。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天条篷,我揣著相機(jī)與錄音骗随,去河邊找鬼。 笑死赴叹,一個胖子當(dāng)著我的面吹牛鸿染,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播乞巧,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼涨椒,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了摊欠?” 一聲冷哼從身側(cè)響起丢烘,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎些椒,沒想到半個月后播瞳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡免糕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年赢乓,在試婚紗的時候發(fā)現(xiàn)自己被綠了忧侧。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡牌芋,死狀恐怖蚓炬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情躺屁,我是刑警寧澤肯夏,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站犀暑,受9級特大地震影響驯击,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜耐亏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一徊都、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧广辰,春花似錦暇矫、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至干发,卻和暖如春朱巨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背枉长。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留琼讽,地道東北人必峰。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像钻蹬,于是被迫代替她去往敵國和親吼蚁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評論 2 345

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