例如,在这种情况下,如果我以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)
?
答案 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
};
我认为这是解决方案之一,但不合适。