18

正如我所看到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;
  }
};
4

2 回答 2

10

如今,这是可能的:

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

检查variableToInspect.type是因为组件实例具有该属性。

于 2019-04-11T11:30:50.513 回答
9

为了完整起见,该软件包react-is现在是上述问题的结束消息中提到的推荐方式。

像这样使用:

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

ReactIs.isFragment(<></>); // true
ReactIs.typeOf(<></>) === ReactIs.Fragment; // true
于 2019-09-16T11:09:21.540 回答