检查孩子是否是React.Fragment

时间:2018-02-27 15:50:04

标签: reactjs 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;
  }
};

2 个答案:

答案 0 :(得分:3)

现在,这是可能的:

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

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

答案 1 :(得分:0)

出于完整性考虑,现在建议使用react-is软件包,如上述问题的结束语中所述。

像这样使用:

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

ReactIs.isFragment(<></>); // true
ReactIs.typeOf(<></>) === ReactIs.Fragment; // true