Я создаю компонент ReactJS с неизвестным количеством детей и предков, и когда определенное событие происходит на одном из предков, я должен знать его родительский компонент , мой первый подход заключается в том, чтобы использовать redux и отправлять дочерний компонент с помощью действия reducex, а затем основные родительские компоненты будут предупреждены и будут проверять, был ли отправленный Componentnt одним из его предков. , но может ли родительский компонент jJ знать каким-то образом, если другой компонент является одним из его предков?проверить, является ли компонент дочерним или предком другого компонента ReactJS
1
A
ответ
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
Большое спасибо, я обновил filddle, чтобы включить ваше решение. https://jsfiddle.net/shaibam/d0q5mwc4/35/ –
единственный способ, которым я могу видеть это сделать с помощью js/DOMelemt 'содержит' с React.findDOMelement. https://jsfiddle.net/shaibam/d0q5mwc4/33/ –