2016-09-23 163 views
0

我想創建一個只有一個事件的組件,並將它放置在任何給定級別(子級或孫級或更深級)的祖先內,並且當事件觸發此祖先的父級時將採取行動例如alert(「我是」+ parent.name +「,我的一個前輩做了某事」))。 想象一個居民拒絕死亡並擁有一百萬前輩的老人民住宅,並且居民每次都會通知彼此的一個祖先有一個生日。 因爲我明白觀察者模式是在反應中發生的,所以最簡單的做法是什麼?並且可以在創建子項時不手動傳遞父對象來完成?我知道如何做到這一點父母對父母溝通的反應

回答

0

一種方式是通過一個函數下來,做一些父

class Parent extends React.Component { 
 
    constructor(props) { 
 
    super(props) 
 
    
 
    this.doSomethingInParent = this.doSomethingInParent.bind(this); 
 
    } 
 
    
 
    doSomethingInParent() { 
 
    console.log('running in parent'); 
 
    } 
 
    
 
    render() { 
 
    return <Child parentsFunction={this.doSomethingInParent} /> 
 
    } 
 
}

現在,如果你的孩子中跑parentsFunction的「家譜」組件,你會看到doSomethingInParent中的console.log。如果你想深入一些,你將不得不通過道具來傳遞這些功能,這些道具可能會在更復雜的應用程序中變得乏味。這就是爲什麼redux/flux很受歡迎的原因,因爲它可以讓你管理狀態/調度動作並避免長時間的回調函數鏈。

+0

跑過功能確實tedius,並且用焊劑的問題/ Redux的是,我不能找出如何特定聽衆適用於電子元件的封閉基團,如果ansestor發出了一個信息如何可以只註冊其家長傾聽。據我所知,所有的父母都會在這裏傳達信息。 –

+0

我只能使用「contains」和React.findDOMnode來做到這一點。 https://jsfiddle.net/shaibam/d0q5mwc4/33/ –