根据评论,您不能直接修改props,因为它们是不可变的。
但是,我认为我有一个简单的解决方案来解决这个问题。我不知道这是什么库或它是如何工作的,所以这可能会也可能不会。但是,这是在安装组件之前如何移除 prop 的一般答案。
话虽如此,我会尝试创建自己的组件来呈现<Button />
:
class MyButtonComponent extends React.Component {
...
render() {
return <Button onClick={this.props.onClickHandler} />;
}
}
然后在您想要增强的组件中:
render() {
<AsyncContainer>
<MyButtonComponent onClickHandler={this.asyncStuff} asyncHandler="onClick"/>
</AsyncContainer>
}
通过这种方式,您可以onClick
在<Button />
组件上维护事件侦听器,但不会传递非法asyncHandler
props。
编辑:
或者,你也可以这样做:
class MyButtonComponent extends React.Component {
...
componentWillMount() {
let newProps = this.props;
delete newProps.asyncHandler;
this.setState({properties: newProps}):
}
render() {
return <Button {...this.state.properties} />;
}
}
这将适用于所有props(与传播经营者),以<Button />
除了asyncHandler
我们删除之前的零件安装创建的副本props
中state
,但与asyncHandler
去除。
还要检查这个答案我给了一个类似的问题。