我需要从孩子身上取下一个道具。
我有一个容器元素,它使用其子元素的属性来对子元素执行一些增强。在渲染之前应该从子级中删除该属性。
<AsyncContainer>
<Button onClick={this.asyncStuff} asyncHandler="onClick"/>
</AsyncContainer>
应在渲染之前从按钮中删除 asyncHandler 属性。
异步容器使用React.cloneElement(child, properties)
.
我尝试将 asyncHandler 属性清空,将其设置为未定义并从 child.props 中删除该属性。看来这个财产想要再摆脱掉是不可能了。
我刚刚遇到这个问题。您可以创建一个新元素并使用您想要传递的旧元素的类型和属性。我不确定这是否是反模式,我只是偶然发现它,到目前为止它似乎运行良好。
它应该看起来像这样:
function AsyncContainer(props) {
const child = React.Children.only(props.children)
const { asyncHandler, ...childProps } = child.props
// do asyncHandler stuff
return React.createElement(child.type, childProps)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)