当前位置: 首页 > 面试题库 >

与“ PropTypes.element”相对应的“ defaultProp”的正确值是什么?

仲法
2023-03-14
问题内容

我有一个组件,我希望接受另一个组件作为道具,然后进行渲染。我希望传递的组件是可选的,并且
在这种情况下不呈现任何内容。

以下代码可以完美运行:

const Component = ({ Inner }) => (
  <div style={{ borderStyle: "solid" }}>
    <Inner />
  </div>
);

Component.propTypes = {
  Inner: PropTypes.element
};

Component.defaultProps = {
  Inner: () => null
};

但是,在页面的第一次加载中,prop-types抱怨:

警告:prop类型失败:提供 给Inner的类型无效的prop ,应该是单个ReactElement。function
Component

我当前的解决方案是重新定义propTypeasPropTypes.oneOfType([PropTypes.element, PropTypes.func]),但这似乎完全不正确。

我应该propType或defaultProp实际上是什么?

SSCCE在沙箱中。

这个问题类似于If元素的proptype是默认值吗?,但这已经接受了一个无效的答案,
即使它确实有效,对我也不是什么帮助,因为我使用的是本机反应。我没有以与本机反应有关的方式来构架这个问题,就像我说过的那样,我的示例工作正常,这只是prop-types一个大问题。


问题答案:

使用elementType的类型将解决您的问题。

Component.propTypes = {
  Inner: PropTypes.elementType
};

由于您的道具是反应组件,因此我们使用elementType。如果您曾经打开过prop-types的源代码,则可以在其中找到。



 类似资料:
  • 什么是REST API响应结构和布局的最佳实践? Scrath示例: 成功回应: 失败响应:

  • 问题内容: 我需要导入课程。包含在Maven项目中的正确依赖项是什么?我正在尝试,但是没有运气(这是pom,而不是jar)。 ps。到目前为止,我发现的唯一解决方法是:(来自Maven Central)。 问题答案: 在ActiveMQ以及Qpid JMS等其他项目中,我们从Apache Geronimo JAR引入了JMS规范类,在此依赖项中提供了1.1 API: 对于JMS 2 API,您需要

  • 我正在学习使用JUnit。我编写了一个生成严格小于xx的数字的方法。 我想用JUnit测试它。不确定使用哪个断言是基于xX的,我也没有看到任何比较断言。

  • 问题内容: 我正在创建一个小型Java Jpanel游戏,其中应该有一个火箭,它通过箭头上下移动,并通过太空射击。 触发方法应按以下方式工作:按下空格键,东西触发并在屏幕上移动,然后当它碰到某个x时,它就会消失。此外,您只能发射一次,直到另一颗子弹消失为止。 我不知道我在做什么错。首先,在我的代码启动后,您会看到子弹在屏幕上飞舞。 2,子弹没有消失。 第三,即使其他子弹仍然可见,它也允许我再次开火

  • 短版 Spotify Android应用程序在最近的一个版本中引入了一个“设备广播状态”开关,我想在我的应用程序中接收那些广播。有哪些广播可用,我应该如何配置我的广播接收器? 我从Spotify应用程序本身中使用了设备广播状态开关,我很高兴该开关取消/激活了这些广播事件。 我现在遇到的问题是,这些信息似乎只是零星地发送。我接收playstatechanged事件(播放、暂停、下一个、上一个),但它

  • 问题内容: 作业:剪刀石头布游戏。 我创建了一个枚举: 从中我想比较各种价值观来决定谁是计算机还是人。设置值就可以了,并且比较也可以正常工作(纸张覆盖岩石,岩石压碎剪刀,剪刀切碎纸张)。但是,我不能束手无策。只要有平局,该用户即被宣布为获胜者。 唉唉......废话......这将澄清:是一个具有价值,或。我无法用比较来,正如你可以看到下面,是铸造类型从我的。 我猜这是一个不等于或无法匹配的问题,