2016-09-23 94 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/ –