javascript - 直接使用 children 道具和使用 React.Children.toArray 方法的区别
问题描述
我正在玩React.Children
和属性,我发现使用和使用children
之间没有区别我还能够通过直接使用它的索引来从孩子道具渲染特定的孩子,并将其视为普通数组children.filter()
React.Children.toArray(children).filter
所以我想知道这两种方法有什么区别吗?如果我可以直接将道具与数组方法一起使用,为什么反应团队toString()
首先实施了该方法
我尝试了 console.log() 他们两个,我发现这两种方法之间没有区别
const ChildrenContainer = (props) => {
const { children, howMany } = props;
console.log(children, '\n', Children.toArray(children));
return (
<div className="card-columns">
{Children.map(children, (thisArg) => thisArg)}
</div>
);
}
解决方案
如果您查看此处的文档:https ://reactjs.org/docs/react-api.html#reactchildren ,您会注意到一些事情。
React.Children
处理null
和undefined
。如果子项为 null 或未定义,则调用children.filter()
将出错。它与
<Fragment>
孩子打交道包括辅助函数,例如
.only()
提供比常规数组更多的反应特定功能。toArray()
更改键以保留嵌套数组的语义。
因此,在您的具体情况下,您可能不会注意到任何差异。但是,即使您确定它children
始终是一个可用的数组,使用React.children
. 这是因为它抽象了孩子的概念,以便您的代码更具未来性(对代码的更改以及对自身做出反应的潜在更改)。
推荐阅读
- arduino - 运行 Thingsboard IOT 网关时出现 MQTT 问题
- c# - 如何强制不优化 ASP.NET Core 源代码
- c++ - 为什么在具有更多 I/O 操作的较大文件上重叠 I/O 会变慢?
- css - 如何使用css更改移动设备中堆叠列的顺序
- angular - 如何过滤 rxjs 数据流中的数组?
- javascript - 匹配输入数字的正则表达式在 -50 到 100000000 之间
- java - 获取上下文 SavedStateHandle Java Android
- python - nginx-ui 项目中的烧瓶配置文件在哪里?
- spring - 在 Spring Cloud sleuth 中重命名 X-B3-TraceId 标头
- python - 我怎样才能重写这个夹具调用,所以它不会被直接调用?