【发布时间】:2019-05-22 20:27:56
【问题描述】:
我有一个组件,我希望接受另一个组件作为道具,并渲染它。我希望传递的组件是可选的,在这种情况下什么也不渲染。
以下代码完美运行:
const Component = ({ Inner }) => (
<div style={{ borderStyle: "solid" }}>
<Inner />
</div>
);
Component.propTypes = {
Inner: PropTypes.element
};
Component.defaultProps = {
Inner: () => null
};
但是,在第一次加载页面时,prop-types 抱怨:
警告:失败的道具类型:提供给
Component的function类型的无效道具Inner,需要一个ReactElement。
我目前的解决方案是将propType 重新定义为PropTypes.oneOfType([PropTypes.element, PropTypes.func]),但这似乎完全不正确。
我的propType 或defaultProp 实际上应该是什么?
这个问题与If proptype of element what is the default? 类似,但它接受了一个不起作用的答案,即使它起作用了,这对我也没什么帮助,因为我正在使用真正的 react native。我没有以与本机反应有关的方式提出问题,就像我说的那样,我的示例有效,只是prop-types 是个大坏蛋。
【问题讨论】:
-
您是否尝试过任何不被接受的答案?接受答案只是因为它帮助了 OP,而不是因为它是唯一的“正确”答案。
-
是的,第二个建议手动渲染
null,这与我想要的相反。第三个根本不起作用。
标签: reactjs react-native react-proptypes