2016-09-24 48 views
1

我正在创建一个ReactJS组件,其中包含未知数量的子代和祖先,并且当某个事件发生在其中一个祖先时,父组件应该知道它。我的第一个方法是使用redux并发送一个redux动作的子组件,然后主要父组件将会收到警报,并检查发送的组件是否是其祖先之一。 但是,如果另一个组件是其祖先之一,那么父类是否可以反应JS组件?检查一个组件是否是另一个组件的子组件或祖先ReactJS

+0

的唯一途径,我可以看到这个工作通过使用js/DOMelemt'contains'和React.findDOMelement。 https://jsfiddle.net/shaibam/d0q5mwc4/33/ –

回答

1

家长可以定义在上下文中的功能,儿童可以调用这个函数:

家长:

childContextTypes: { 
    notifyChange: React.PropTypes.func.isRequired 
}, 

getChildContext() { 
    return { 
     notifyChange: (...args) => this.handleChange(...args) 
    } 
}, 

handleChange (arg) { 
    console.log(arg + ' bar!') 
}, 

儿童:

contextTypes: { 
    notifyChange: React.PropTypes.func 
}, 

handleSomething() { 
    const { notifyChange } = this.context 

    // safety check if component is used elsewhere 
    if (notifyChange) notifyChange('foo!') 
}, 
+0

非常感谢,我更新了过滤器以包含您的解决方案。 https://jsfiddle.net/shaibam/d0q5mwc4/35/ –

相关问题