Home Reference Source

src/tools/getElementType.js

/**
 * Возвращает тип createElement() на основе props компонента.
 * Полезно для расчета того, какой тип компонента должен отображаться.
 *
 * @param {function} Component компонент React.
 * @param {object} props атрибуты компонента
 * @param {function} [getDefault] функция для определения дефолтного значения.
 * @returns {string|function} ReactElement
 */
function getElementType(Component, props, getDefault) {
  const { defaultProps = {} } = Component;

  if (props.as && props.as !== defaultProps.as) return props.as;

  if (getDefault) {
    const computedDefault = getDefault();
    if (computedDefault) return computedDefault;
  }

  return defaultProps.as || 'div';
}

export default getElementType;