reactjs - 提供给“DropdownItem”的无效道具“children”需要一个 ReactNode
问题描述
- 成分:
DropdownItem
- 反应带版本
^8.0.0
- 反应版
^16.8.6
- 引导版本
^4.3.1
我正在使用 reactstrap 下拉菜单。我正在尝试使用地图功能填充下拉项目
render() {
return (
<Dropdown isOpen={this.state.open} toggle={this.toggle}>
<DropdownToggle caret>
{this.props.name}
</DropdownToggle>
<DropdownMenu>
{this.props.items.map(function(item) {
return(
<DropdownItem key={item}>
<text>{item}</text>
</DropdownItem>
);
})}
</DropdownMenu>
</Dropdown>
);
}
如果我没有将 {item} 包装在标签(div 或文本)中,我会在运行测试用例时收到以下错误。
console.error node_modules/prop-types/checkPropTypes.js:20
Warning: Failed prop type: Invalid prop children supplied to DropdownItem, expected a ReactNode.
in DropdownItem
只是想知道如果我不将其包装在标签中,为什么会收到警告?
解决方案
您收到警告是因为DropdownItem
期望节点作为子节点,并且无法推断您item
是否是有效的反应节点,然后引发警告。
根据关于 propTypes 的文档,您可以尝试将项目包装在 a 中<React.Fragment>
,但恐怕它不起作用:
// 可以呈现的任何内容:数字、字符串、元素或数组 //(或片段)包含这些类型。可选节点:PropTypes.node,
好消息是 propTypes 检查只发生在开发模式下,一旦你编译你的应用程序,所有与 propTypes 相关的警告都消失了,如果你不想添加额外的元素并且可以忍受警告,一切都应该很好。
推荐阅读
- java - 如何从 txt 文件中读取 2 行
- python - 获取 TypeError:只能将列表(不是“str”)连接到列表,同时从 Flask Mail 发送邮件
- c++ - Lua 5.2 使用 C API 在不同对象中进行沙箱化
- database - postgresql-heroku:无法创建数据库
- unity3d - 协程倒数计时器非常慢
- html - div宽度不随响应式css而变化
- flutter - 如何在颤动中获得设备的总内存大小?
- r - 将列名作为新行添加到 R 中的 .dat 文件
- reactjs - 使用父组件中的按钮调用子组件中的函数
- google-cloud-platform - 如何使用 GCP 控制台启用 Cloud Billing 导出?