检查组件是否是另一个组件ReactJS的子级或祖先

时间:2016-09-24 08:00:47

标签: reactjs components redux children ancestor

我正在创建一个具有未知数量的子和祖先的ReactJS组件,并且当其中一个祖先发生某个事件时,父组件应该知道它。我的第一种方法是使用redux并使用redux动作发送子组件,然后主要的父组件将被警告并检查Componetnt发送的是否是其祖先之一。 但是,如果另一个组件是其祖先之一,父母反应组件是否可以知道?

1 个答案:

答案 0 :(得分:1)

父级可以在上下文中定义一个函数,然后Children可以调用这个函数:

父:

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!')
},