首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React.Children.map vs React Children.toArray.map

React.Children.map vs React Children.toArray.map
EN

Stack Overflow用户
提问于 2017-06-23 20:43:11
回答 3查看 5.9K关注 0票数 8

在React中,children是组合中使用的不透明数据结构。为了实现这一点,React公开了React.Children应用程序接口,其中包含React.Children.mapReact.Children.toArray方法。

根据文档,Children.map在每个子元素上调用一个函数(通常是为了呈现或cloneElement),而toArray则从不透明的children更改为简单的js数组。

React.Children.map(child, fn)React.Children.toArray.map(child, fn)感觉上是等效的。我经常看到Children.map被使用,并且正在寻找可靠的证据来支持最佳实践,或者对toArray.map的用例进行解释。

我的第一个直觉是,toArray显然会添加另一个调用,这可能会降低性能(稍微差一点?),但我相信toArray也会去掉undefinednull的子调用。

EN

回答 3

Stack Overflow用户

发布于 2021-02-04 17:08:42

这是一个非常古老的问题,但我正在添加我发现的内容!

当将nullundefined作为子级传递时,Children.toArrayChildren.map略有不同。

代码语言:javascript
复制
<ReactComponent>
  <div>one</div>
  { null }
</ReactComponent>

在上面的示例中,

Children.toArray跳过nullundefined,结果的length将为1

但是,当结果为null时,Children.map(children, (val) => {})也会迭代,结果的length将为2

票数 5
EN

Stack Overflow用户

发布于 2017-06-23 22:41:13

根据the react code的说法,Children.toArray与传递身份函数(x) => xChildren.map相同。因此,与调用Children.toArray(children).map(func)相比,Children.map(children, func)的性能更高。

票数 3
EN

Stack Overflow用户

发布于 2021-07-20 12:48:10

如果您使用的是Inline If with Logical && Operator,则React.Children.mapReact.Children.toArray.map之间的这种区别非常重要

假设您有这个React组件

代码语言:javascript
复制
const ReactComponent = () => {
    return (
        React.Children.map((child, index) => (
            <div>{child}</div>
        ))
    )
}

const checkBooleanValue() => {
    return false;
}

在以下情况下,您可以将其与子级和条件一起使用:

代码语言:javascript
复制
<ReactComponent>
        <span>Child</span>
        {checkBooleanValue() &&
            <span>Another Child</span>
        }
</ReactComponent>

如果checkBooleanValue()false

  • React.Children.map将为您提供用于内联If

  • <span> 的两个子项

  • React.Children.toArray.map只会给你一个孩子:<span> React.Element

使用React.Children.map,你最终会得到第二个孩子的一个空的div。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44721768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档