我有一个react.js组件,它具有带onChange事件处理程序的select。我在需要向onChange添加特定行为的父组件中重用该组件,但只有在满足某些条件时才使用该组件。如果不是,则应适用子组件的行为。这种情况伪会是这样的:react.js中的事件组合
var ParentComponent = React.createClass({
handleChange: function(event) {
if (condition_on_event) {
do_something_and_stop_the_handler();
} else {
//execute_child_handler
}
},
render: function() {
...
<ChildComponent />
}
});
var ChildComponent = React.createClass({
handleChange: function(event) {
//child handler code
}
},
render: function() {
...
<select onChange={this.handleChange} />
}
});
的想法是,母公司将根据选择的子对象中的值执行的东西。但是只有一个值,其余的值通常会执行子处理程序。
在这种情况下,如果我将父处理程序作为道具传递,它会覆盖子处理程序,所以我需要在父项上复制代码。
想到的一个解决方案是,我可以将处理程序作为具有不同名称的通道传递,以便在子处理程序中使用它,但它看起来像一个非常肮脏的解决方案,因为我添加了不必要的道具在孤立地使用时给孩子。
任何提示?
传递一个道具给孩子似乎是一个合适的解决方案给我。没有必要给它一个不同的名字。 –
@FelixKling但是,那么我怎样才能组成这两个处理程序的行为呢? – antonienko
哦,我只是注意到,你想有条件地执行取决于事件。 MMH。 –