当前位置: 首页 > 知识库问答 >
问题:

使用propTypes验证时的条件呈现和警告

蒲曦
2023-03-14

我有一个React组件,它在输入时需要子对象。道具类型设置如下:

static propTypes = {
  children: PropTypes.arrayOf(PropTypes.element).isRequired
};

但是,当内联条件变为false时,我会收到警告,即:

{isLoggedIn && <div>You are logged in</div>}

警告:失败的道具类型:提供给WelcomeComponent的类型为boolean的无效道具子[0],应为单个元素。

文档没有真正的帮助。https://facebook.github.io/react/docs/conditional-rendering.html

共有1个答案

方飞白
2023-03-14

这是因为

在您的情况下,当用户未登录时,它将返回false,并且您仍然希望得到一个有效的React元素,但它不满足。

您可以在这里看到用于检查接收的道具是否正常(对于元素检查)的逻辑:https://github.com/facebook/react/blob/master/src/isomorphic/classic/element/ReactElement.js#L378.在您的情况下,typeof false=='对象'将失败。然后https://github.com/facebook/react/blob/master/src/isomorphic/classic/types/ReactPropTypes.js#L252此方法将打印警告。

 类似资料:
  • 我有以下代码; 我遇到的问题是条件渲染线; 就好像它只识别OR运算符之间的一个条件,即放在第一位的条件。有没有可能在React with条件呈现中OR()运算符不可用? 如果是的话,我该如何实现以下的目标呢?例如基于2或条件的呈现。

  • 如何使用JSX进行条件渲染? 例如,我这里有div,如果props的值为null,我想呈现文本“不知道”,否则如果props不等于null,则呈现props。 例如: 我试过了,但没有成功。知道我做错了什么吗? 提前感谢!

  • 问题内容: 我在我的JSF项目中使用Bean验证。现在,我遇到了一种情况,在这种情况下,仅当验证先前的方法时,我才想验证方法。 我举一个例子: 由于我将收到每个参数的激活码,因此我想先对其进行验证。如果无效,将导致违规。如果是这样,我什至无法检查它是否已被激活(因为代码无效)。因此,是否有可能实现如上所述的任何功能(if语句的功能,我确实知道这是行不通的,但是它表明了我要完成的工作)。 提前致谢

  • 对于在其生命周期的某个点隐藏的组件,呈现它的最佳方式是什么?1)渲染组件,但不显示它(显示:无)。2)只在需要时渲染组件。什么对性能更好?如果组件的道具和状态稍后更新,是否最好让组件存在,但隐藏在虚拟DOM中? 或者这个:

  • 如何在样式组件中使用条件渲染来设置我的按钮类在React中使用样式组件? 在css中,我会这样做: 如果我尝试使用'

  • JSF的 @ViewScoped不可用,因为它与CDI冲突 提交表单时,JSF动态呈现组件的值变为空 有条件呈现的输入组件不更新值 未调用CommandButton/CommandLink/Ajax操作/Listener方法或未更新输入值 我能想到导致这种行为的几种情况: “rendered”似乎是基于backing bean中的值重新计算的,而不是UI中给出的新值(如果默认为1,则提交时再次为1