有没有一种方法来检查propTypes的观察者(组件)

时间:2020-07-13 11:56:18

标签: reactjs mobx-react react-proptypes

例如,在这种情况下,如果我以ObservedA的身份将B传递给Comp

const ObservedA = observer(class A extends React.Component {});

function B({Comp}) {
  return <Comp />;
}

B.propTypes = {
  Comp: PropTypes.node // Warning!
};

发生警告:

警告:道具类型失败:提供给Comp的道具B无效,应该是ReactNode。

是否可以检查propTypes中是否有observer(Component)

2 个答案:

答案 0 :(得分:1)

如果您想检查Comp道具是否可以渲染,可以使用prop-types 15.7.0开头的PropTypes.elementType

B.propTypes = {
  Comp: PropTypes.elementType
};

它将对每种可渲染类型均有效,例如上下文提供者。

答案 1 :(得分:0)

我找不到检查observer(Component)的正确方法,但是我知道babel将class转换为function() {}。所以我只用func来检查道具,例如:

B.propTypes = {
  Comp: PropTypes.func
};

我认为这是解决方案之一,但不合适。

相关问题