我有一个组件,希望接受另一个组件作为道具,然后进行渲染。我希望该传递的组件是可选的,并且在这种情况下不呈现任何内容。
以下代码可以正常工作:
const Component = ({ Inner }) => (
<div style={{ borderStyle: "solid" }}>
<Inner />
</div>
);
Component.propTypes = {
Inner: PropTypes.element
};
Component.defaultProps = {
Inner: () => null
};
但是,在页面的第一次加载中,prop-types
抱怨:
警告:道具类型失败:提供给
Inner
的类型function
的道具Component
无效,应该有一个ReactElement。
我当前的解决方案是将propType
重新定义为PropTypes.oneOfType([PropTypes.element, PropTypes.func])
,但这似乎是完全错误的。
我的propType
或defaultProp
应该是什么?
这个问题与If proptype of element what is the default?类似,但是已经接受了一个无效的答案,即使可以,但对我来说并不是很大的帮助,因为我将React Native用于真实。我没有以与本机反应有关的方式来构架这个问题,就像我说的,我的示例有效一样,只是prop-types
是一个大骗子。