Проверьте, является ли ребенок React.Fragment

Как я вижу React.isFragment это только предложение на данный момент: https://github.com/facebook/react/issues/12038

Есть ли обходной путь, чтобы сделать что-то вроде

if (child instanceof React.Fragment) {
  ...
}

пока этот API не доступен.

Временное решение, которое работает для меня:

const isReactFragment = child => {
  try {
    return child.type.toString() === React.Fragment.toString();
  } catch (e) {
    return false;
  }
};

0 ответов

В настоящее время это возможно:

function isReactFragment(variableToInspect) {
  if (variableToInspect.type) {
    return variableToInspect.type === React.Fragment;
  }
  return variableToInspect === React.Fragment;
}

Чек на variableToInspect.typeпотому что экземпляры компонентов обладают этим свойством.

Для полноты комплектации react-is теперь это рекомендуемый путь, упомянутый в заключительном сообщении вышеупомянутой проблемы.

Используйте так:

import React from "react";
import * as ReactIs from 'react-is';

ReactIs.isFragment(<></>); // true
ReactIs.typeOf(<></>) === ReactIs.Fragment; // true
Другие вопросы по тегам