Javascript 判断函数是功能组件还是普通函数的可靠方法

Javascript 判断函数是功能组件还是普通函数的可靠方法,javascript,reactjs,Javascript,Reactjs,给定一个功能组件: const AComponent = (props) { // ... return <div>{...}</div>; }; 这样即使代码被传输和缩小,它也能工作 我想检查一下fn.中的name是否为真正的功能组件,例如: 函数是真正的函数组件(fn){ //缩小时不起作用 返回类型fn==“函数”&&fn.name[0]==fn.name[0].toUpperCase(); } 但是当我缩小代码时,fn.name是空的,上

给定一个功能组件:


const AComponent = (props) {
    // ...
    return <div>{...}</div>;
};

这样即使代码被传输和缩小,它也能工作

我想检查一下
fn.
中的name
是否为真正的功能组件
,例如:


函数是真正的函数组件(fn){
//缩小时不起作用
返回类型fn==“函数”&&fn.name[0]==fn.name[0].toUpperCase();
}
但是当我缩小代码时,
fn.name
是空的,上面的代码会中断

谢谢你的关注

编辑:我正在努力实现以下目标:


function MyComponent({
    componentForDataItem = AComponent,
    data = []
} = {}) {
    const componentIsReactComponent = isTrulyFunctionalComponent(componentForDataItem);

    return data.map(dataItem => {
        // componentForDataItem can either be a functional component
        // or a function returning a React component to use for the given dataItem. 
        const Component = componentIsReactComponent
            ? componentForDataItem
            : componentForDataItem(dataItem);
        return (
            <Component {...} />
    });

}

<MyComponent data={[...]} /> // Uses the default AComponent for all items of data

<MyComponent data={[...]} componentForDataItem={dataItem => {
   // Custom logic for a specific dataItem, e.g.:
   return if dataItem.value === "check" ? AnotherComponent : AComponent;
}} />


功能部件({
componentForDataItem=组件,
数据=[]
} = {}) {
常量组件reactcomponent=isTrulyFunctionalComponent(数据项的组件);
返回data.map(dataItem=>{
//componentForDataItem可以是功能组件
//或返回React组件以用于给定数据项的函数。
常量组件=组件反应组件
?数据项的组件
:componentForDataItem(数据项);
返回(
});
}
//对所有数据项使用默认组件
{
//特定数据项的自定义逻辑,例如:
如果dataItem.value==“check”?则返回另一个组件:一个组件;
}} />

你到底想做什么?React函数组件是常规的普通函数。请检查我的编辑。@drewrese我知道,但我仍然需要区分React管理的常规普通函数(接收道具,可能有挂钩或没有挂钩等)还有一个普通函数,在我的例子中,它充当特定
数据项的工厂。请检查我的编辑。除非执行该函数,否则无法判断。
函数GoGuess(){return Math.random()>0.5?:“Hello”}
你到底想做什么?React函数组件是常规的普通函数。请检查我的编辑。@drewrese我知道,但我仍然需要区分React管理的常规普通函数(接收道具,可能有挂钩或没有挂钩等)还有一个普通函数,在我的例子中,它充当特定
数据项的工厂。请检查我的编辑。除非执行该函数,否则无法判断。
函数GoGuess(){return Math.random()>0.5?:“Hello”}