Javascript 将所有事件传递给子组件

Javascript 将所有事件传递给子组件,javascript,reactjs,Javascript,Reactjs,在React中是否可以将所有事件传递给子元素 例如,我有一个自定义按钮类,它(简化)如下所示: class按钮扩展组件{ 建造师(道具){ 超级(道具); this.onClick=this.onClick.bind(this); } /* .... */ onClick(ev){ const{disabled,onClick}=this.props; 如果(!已禁用){ onClick(ev); } } 渲染(){ 常数{ 儿童 残废 类型 }=这是道具; 返回( {儿童} } }我编写了一

在React中是否可以将所有事件传递给子元素

例如,我有一个自定义按钮类,它(简化)如下所示:

class按钮扩展组件{
建造师(道具){
超级(道具);
this.onClick=this.onClick.bind(this);
}
/* .... */
onClick(ev){
const{disabled,onClick}=this.props;
如果(!已禁用){
onClick(ev);
}
}
渲染(){
常数{
儿童
残废
类型
}=这是道具;
返回(
{儿童}
}

}
我编写了一个函数来迭代道具并过滤掉所有以“on”开头的属性,这是我迄今为止最接近的一次。如果它对其他人有帮助:

/*helpers.js*/
导出函数filterEvents(道具,忽略=[])){
让事件={};
用于(将属性放在道具中){
如果(道具hasOwnProperty(属性)){
if(property.startsWith('on')&&ignore.indexOf(property)=-1){
事件[属性]=道具[属性];
}
}
}
返回事件;
}
/*过滤器事件的测试*/
从“chai”导入{expect};
从“./helpers”导入{filterEvents};
描述('filterEvents',()=>{
常量道具={
类名:“someClass”,
残疾人:对,,
onBlur:“onBlur”,
onClick:“onClick”,
onMouseDown:“onMouseDown”,
onMouseUp:“onMouseUp”
};
它('仅返回以on'开头的键,()=>{
预期常数={
onBlur:“onBlur”,
onClick:“onClick”,
onMouseDown:“onMouseDown”,
onMouseUp:“onMouseUp”
};
expect(过滤事件(道具)).to.deep.equal(预期);
});
它('仅返回以on开头的键减去忽略数组中的键',()=>{
预期常数={
onBlur:“onBlur”,
onMouseUp:“onMouseUp”
};
constignore=['onClick','onMouseDown'];
expect(过滤事件(道具,忽略)).to.deep.equal(预期);
});
});
/*在组件内部使用函数*/
从组件文件顶部的“/helpers”;//导入{filterEvents}
//在渲染方法内部:
const events=filterEvents(this.props,['onClick']);//不包括onClick它的处理方式与问题示例类似
返回(
{this.props.children}

);
为事件命名名称空间?
{…this.props.events}
谢谢你的评论@RobM。我已经考虑了你的建议,但我更愿意尽可能接近默认的React Api。目前,我已经编写了一个函数,用于过滤以“on”开头的属性。这是迄今为止我所做的最接近的一个。我将发布该函数,作为感兴趣的人的答案。