代码之家  ›  专栏  ›  技术社区  ›  boosted_duck

在react中使用array.map

  •  0
  • boosted_duck  · 技术社区  · 6 年前

    我很困惑这个代码是如何工作的

    const sidebar = (
            <ul>
            {
                props.posts.map((post) =>
                    <li key={post.id}>
                        {post.title}
                    </li>
                )
            }
            </ul>
        );
    

    我知道一个映射返回一个数组,但是它如何返回所有这些标记

    <li key={post.id}>
        {post.title}
    </li>
    

    并渲染它?

    我试过把它改成foreach,但没用。用户界面上没有显示任何内容:

    const sidebar = (
        <ul>
            {
                props.posts.forEach((post) =>{
                    return <li key={post.id}>
                        {post.title}
                    </li>
                })
            }
        </ul>
    );
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   boosted_duck    6 年前

    这个 map() 方法创建一个新数组,其结果是调用 为调用数组中的每个元素提供了函数。

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

    这个 forEach() 方法对每个函数执行一次提供的函数 数组元素。

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

    这意味着如果您试图返回在 forEach 您没有创建标记数组。

    JSX期望呈现一个标记数组,但是在foreach中,您没有创建一个数组,您只是在数组上迭代,所以JSX最后什么也没有收到。