什么是反应中的'PropTypes.node`和`PropTypes.any`之间的区别?

yin*_*nie 20 javascript reactjs

// Anything that can be rendered: numbers, strings, elements or an array
// (or fragment) containing these types.
optionalNode: PropTypes.node,

// A value of any data type
requiredAny: PropTypes.any.isRequired,
Run Code Online (Sandbox Code Playgroud)

PropTypes.any包含比PropTypes.node更多的女巫类型?

Pri*_*iya 19

PropTypes是一种验证通过我们的道具传递的值的方法.

node 我们可以使用React.PropTypes.node传递任何可以呈现的内容,例如数字,字符串,DOM元素,数组或包含它们的片段.

任何类型 React允许我们指定必须存在道具,无论它的类型如何.我们可以使用React.PropTypes.any验证器来完成此操作.

  • 你没有指定任何会传递`PropTypes.any`并且失败'PropTypes.node`的类型.我不认为这个答案是完整的. (8认同)

Nit*_*hav 8

PropTypes.node: 实际上可以在屏幕上呈现的任何可呈现值,例如数字和字符串。

PropTypes.any: 任何类型的值,即使是布尔值等不可渲染的值。

如果是<div>{true}</div>JSX代码,

booleanValue: PropTypes.node将给出错误,而 booleanValue: PropTypes.any不会给出任何此类错误。

  • 如果我错了,请纠正我,但 JSX 不应该是 `PropTypes.node`,因为它是可渲染的 (2认同)
  • 很抱歉成为一名死灵法师,但是“&lt;div&gt;{true}&lt;/div&gt;”怎么不是一个节点呢?你能详细说明一下吗?您的意思是说“&lt;div&gt;{booleanValue}&lt;/div&gt;”吗?但即便如此,为什么会失败呢? (2认同)