mirror of
https://github.com/facebook/react.git
synced 2026-02-25 13:13:03 +00:00
* Call and Return components should use ReactElement ReactChildFiber contains lots of branches that do the same thing for different child types. We can unify them by having more child types be ReactElements. This requires that the `type` and `key` fields are sufficient to determine the identity of the child. The main benefit is decreased file size, especially as we add more component types, like context providers and consumers. This updates Call and Return components to use ReactElement. Portals are left alone for now because their identity includes the host instance. * Move server render invariant for call and return types * Sort ReactElement type checks by most likely * Performance timeline should skip over call components Don't think these were intentionally omitted from the blacklist of component types. I went ahead and updated getComponentName to include special types, even though I don't think they're used anywhere right now. * Remove surrounding brackets from internal display names
41 lines
896 B
JavaScript
41 lines
896 B
JavaScript
/**
|
|
* Copyright (c) 2013-present, Facebook, Inc.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
* @flow
|
|
*/
|
|
|
|
import type {Fiber} from 'react-reconciler/src/ReactFiber';
|
|
|
|
import {
|
|
REACT_CALL_TYPE,
|
|
REACT_FRAGMENT_TYPE,
|
|
REACT_RETURN_TYPE,
|
|
REACT_PORTAL_TYPE,
|
|
} from 'shared/ReactSymbols';
|
|
|
|
function getComponentName(fiber: Fiber): string | null {
|
|
const {type} = fiber;
|
|
if (typeof type === 'function') {
|
|
return type.displayName || type.name;
|
|
}
|
|
if (typeof type === 'string') {
|
|
return type;
|
|
}
|
|
switch (type) {
|
|
case REACT_FRAGMENT_TYPE:
|
|
return 'ReactFragment';
|
|
case REACT_PORTAL_TYPE:
|
|
return 'ReactPortal';
|
|
case REACT_CALL_TYPE:
|
|
return 'ReactCall';
|
|
case REACT_RETURN_TYPE:
|
|
return 'ReactReturn';
|
|
}
|
|
return null;
|
|
}
|
|
|
|
export default getComponentName;
|