【发布时间】:2019-01-18 19:32:00
【问题描述】:
目标:我需要对 React 组件进行一些后处理,这涉及到移除一些道具。我尝试使用React.cloneElement 传递{propToRemove: undefined} 作为第二个参数,但没有删除道具,只是设置为undefined。我可以使用React.createElement,但根据文档,这将失去refs,这是一个严重的缺点。
一个人为的例子,没有做任何有用的事情,只是为了测试:
const removeUnknownPropWithClone = (el) => {
return React.cloneElement(el, {unknownProp: undefined})
};
const App = (props) =>
removeUnknownPropWithClone(
<div unknownProp="1">Hello</div>
);
这显示了错误消息:“React 无法识别 DOM 元素上的 unknownProp 属性”。事实上,道具设置为undefined,但它仍然存在。我需要完全删除它。
Runnable snippet(打开控制台查看错误信息)
相关问题(但未在此处回答):React - Remove prop from child
相关源码:https://github.com/facebook/react/blob/master/packages/react/src/ReactElement.js#L293
【问题讨论】:
-
查看stackoverflow.com/questions/43041013/…,看看能不能找到一些灵感?
-
谢谢,@DamianSimonPeter,我做到了,甚至写了几个 cmets :)
-
是的,我认为错误似乎有点简单,我可能错了。您不应该在 DOM 元素中包含“unknownProp=1”。我想这是你的错误的原因
<div unknownProp="1"@tokland -
是的,当然,这是一个人为的例子,我会在问题中添加一个注释。我希望处理删除正在其他地方使用的道具。
标签: javascript reactjs