【发布时间】:2021-10-21 17:13:51
【问题描述】:
在创建 HOC 时,我不确定要包装哪种组件,有时它是另一个 React 组件,有时它可能是一个普通的 DOM 元素,如 li 和 a。
WrappedComp = myHOC(BaseComponent)
MyHOC 会将额外的 props 传递给被包装的组件,并且在大多数情况下,这将正常工作。
但有时当 BaseComponent 是 li 时,它不会接受额外的 props,React 会抛出警告 Unkown Prop Warning 说 DOM 元素不接受非标准 dom 属性:https://facebook.github.io/react/warnings/unknown-prop.html
那么我如何检查 BaseComponent 是否是 DOM 元素? 如果是这样,我不会将额外的道具传递给它。
有没有更好的方法来做到这一点?
【问题讨论】:
-
你检查
console.log(BaseComponent)的输出了吗? -
为什么需要将 HOC 包裹在每个组件上?是否可以包装和导出要使用它扩展的组件?
-
最简单的检查是看它是否为
function,typeof(BaseComponent) == "function",对于HTML组件,react 使用string。 -
这个检查本身并不能解决问题,因为 React 会在任何定义了
propTypes的组件上给你这些警告。
标签: javascript reactjs dom