React: React.PropTypes.node 应该接受无状态组件(函数)

创建于 2015-11-22  ·  3评论  ·  资料来源: facebook/react

我刚刚替换了一些使用 es6 类定义的反应组件,现在我收到关于我的反应无状态组件(只是功能)不是 ReactNode 的警告。

Warning: Failed propType: Invalid prop `Loader` supplied to `Picture`, expected a ReactNode.

我正在使用React.PropTypes.node验证一些组件,但现在我需要使用PropTypes.oneOfType([ PropTypes.node, PropTypes.func ]) ,这似乎有点长,说“这可以是任何可以呈现为组件的东西”(这就是ProTypes.node应该覆盖对吗?)。

从文档

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

也许应该添加func ? 或者有什么理由为什么node也不能处理func吗?

最有用的评论

你能展示一下你是如何使用它的吗? 我认为组件类也不应该对node有效。 node应该接受任何可以渲染的东西。 类不能直接呈现 - 您将传递一个具有类型集的元素。

所有3条评论

添加新的 propType 验证器怎么样? 就像是

propTypes: {
    optionalComponent: React.PropTypes.component
}

其中组件的形式为

PropTypes.oneOfType([ PropTypes.node, PropTypes.func ])

或类似的东西。 在我看来,让人们传入函数是非常危险的,但我不确定如何进行更好的验证。 阅读function.toString似乎是一个巨大的 hack,它在缩小后不起作用,但这是我知道的唯一选择。

你能展示一下你是如何使用它的吗? 我认为组件类也不应该对node有效。 node应该接受任何可以渲染的东西。 类不能直接呈现 - 您将传递一个具有类型集的元素。

我的天啊。 你说的太对了。 我觉得我好笨。 我想我是在用不好的方式验证某些东西。 对不起,噪音。

此页面是否有帮助?
0 / 5 - 0 等级