Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从高阶组件获取已包装组件的名称_Javascript_Reactjs - Fatal编程技术网

Javascript 从高阶组件获取已包装组件的名称

Javascript 从高阶组件获取已包装组件的名称,javascript,reactjs,Javascript,Reactjs,我想说的是: import React, { Component } from "react"; let validateURL = WrappedComponent => class extends Component{ render() { if( wrappedcomponentnameis === 'xyz') return ... elseif(wrappedcomponentnameis ==

我想说的是:

import React, { Component } from "react";

let validateURL = WrappedComponent =>
  class extends Component{

    render() {
         if( wrappedcomponentnameis === 'xyz')
                 return ...
         elseif(wrappedcomponentnameis === 'abc')
                  return ...
         and so on....
    }
  };

export default validateURL;

如何获取此HOC中已包装组件的名称?

您可以通过
WrappedComponent.name
访问它:

const HOC=WrappedComponent=>类包装器扩展React.Component{
render(){
如果(WrappedComponent.name==='Hello'){
返回
}
返回
}
}
类Hello扩展了React.Component{
render(){
返回Hello{this.props.name}
}
}
const App=HOC(你好)
ReactDOM.render(
,
document.getElementById('容器')
);


使用
this.constructor.name
,或者-您可以在
render()
方法中返回
this.props.children
this.constructor.name
返回
\u class2
,它不是组件的名称
this.props.children
也不起作用。您好,如果组件在诸如React Redux、React Router等库的HOC中被包装/双重包装,是否有办法获得根组件名称。Jest有类似.wrappedComponent的东西,您可以在测试中使用它。所以我认为这是可能的。为此,我们必须寻找一个笑话源代码。