Я понимаю, как передать событие click из родительского компонента в дочерний компонент в React, но не понимаю, как я могу передать его от бабушки и дедушки внуку, не делая родительский клик.Передача обработчика событий от бабушки и дедушки к компоненту GrandChild в Reactjs
В следующем примере я хотел бы, чтобы родительский div закрылся, щелкнув div grandild.
Вот мой код, который не работает. Спасибо!
var Grandparent = React.createClass({
getInitialState: function() {
return {open: true};
},
close: function() {
this.setState({open: false});
},
render() {
var grandparentBox={backgroundColor: 'yellow', height: 400, width: 400};
return <div style = {grandparentBox}><Parent open={this.state.open} close = {this.close}/></div>;
}
});
var Parent = React.createClass({
render() {
var parentBox={backgroundColor: 'red', height: 100, width: 100};
if (this.props.open == true) {
return <div close={this.props.close} style = {parentBox}><Grandchild/></div>
}
else {
return null;
}
}
});
var Grandchild = React.createClass({
render() {
var grandchildBox={backgroundColor: 'black', height: 20, width: 20, top: 0};
return <div onClick={this.props.close} style = {grandchildBox}></div>
}
});
ReactDOM.render(
<Grandparent/>,
document.getElementById('container')
);
Спасибо! Но если я передам Grandchild близкому методу, это не делает ничего с onClick. –
Я не уверен точно, что вы ищете, но щелчок внука закрывает как внука, так и родителя в этой [скрипке] (https://jsfiddle.net/chadlieberman/55htLpgL/). –
Спасибо, Чад, проблема в том, что я хочу ТОЛЬКО внука, чтобы он мог обрабатывать клики. Когда вы нажимаете на родителя, он не должен закрываться, но когда вы нажимаете на Grandchild, оба должны закрываться. –