Skip to content

[object Object] displayName for React.forwardRef components #615

Closed
@g12i

Description

@g12i

React.forwardRef creates an object with a rendering function moved to a .render property (see here).

function forwardRef(render) {
  return {
     $$typeof: REACT_FORWARD_REF_TYPE,
    render,
  };
}

I'd suggest to use react-is package and copy logic from React's shared/getComponentNameFromType.js

import { isForwardRef } from "react-is";

function getWrappedName(
  outerType: mixed,
  innerType: any,
): string {
  const displayName = (outerType: any).displayName;
  if (displayName) {
    return displayName;
  }
  return innerType.displayName || innerType.name || 'No Display Name';
}


const getReactElementDisplayName = (element: mixed): string => {
  if (isForwardRef(element)) {
    return getWrappedName(element, (element as any).type);
  }
  // .. .etc
};

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions