【发布时间】:2017-08-19 20:12:54
【问题描述】:
我需要从一个孩子身上移除一个道具。
我有一个容器元素,它使用子元素的属性来对子元素执行一些增强。该属性应该在渲染之前从子元素中移除。
<AsyncContainer>
<Button onClick={this.asyncStuff} asyncHandler="onClick"/>
</AsyncContainer>
asyncHandler 属性应该在渲染之前从按钮中移除。
AsyncContainer 使用React.cloneElement(child, properties)。
我已尝试将 asyncHandler 属性设为空,将其设置为未定义并从 child.props 中删除该属性。看来再也无法摆脱这个属性了。
【问题讨论】:
-
props在 React 中是不可变的,因此不能由组件本身更改。父级必须修改prop,然后将其传递给组件。 -
你不能对孩子的道具做任何事情,因为它们是只读的:facebook.github.io/react/docs/…
-
也许你可以克隆孩子并以某种方式替换属性对象?
标签: javascript reactjs