【发布时间】:2019-08-30 23:41:26
【问题描述】:
我已经看到包和库能够console.log HOCs + 基本组件。由于以下原因,我对如何实现它感到非常困惑:
- 类组件的名称定义为
component.displayName - 功能组件有
component.name - HOC 没有获取嵌套 HOC 和组件名称的标准方法
例如一个示例 HOC
function NamePrinter(Wrapped) {
return (class Wrapper extends React.Component {
componentWillReceiveProps() {
console.log(`the name of this component is ${Wrapped.displayName || Wrapped.name}`)
}
render() {
return <Wrapped {...this.props} />
}
})
}
据我所知,这是真的。例如,react-redux 对 getting the name 有自己的约定,但这意味着我在搜索名称时只能“深入一层”。
如果我有一个这样包装的组件:
NamePrinter(connect(() => ({}), null)(withStyles({})(React.memo(MyComponent))))
我如何console.log 使用我的示例 HOC
connect(withStyles(React.memo(MyComponent)))
或类似的具有相同表现力的东西?
【问题讨论】:
标签: reactjs high-order-component