【问题标题】:map function loop when rendering with ReactJS and concat JSX syntax使用 ReactJS 和 concat JSX 语法渲染时的映射函数循环
【发布时间】:2016-02-24 15:31:31
【问题描述】:

非常简单的问题,当我在渲染时通过数组循环使用 .map 函数反应组件时,说:

render() {
        let board = this.props.board;

        return (
            <div>
                 {
                   board.map((piece,index) => {
                       return (
                           <Piece data={piece}/>
                       );
                   })
                 }
            </div>
        );
    }

我正在尝试每 5 条添加一条断线,所以 (index % 5 == 0)&lt;Piece /&gt; 之前添加 &lt;br /&gt;
当我尝试与+ 连接或做这样的事情时:

board.map((piece,index) => {
      return (
                (index % 5 == 0) ? <br /> : ''
                <Piece data={piece}/>
             );
})

我得到了[Object object]'s 矩阵的输出

【问题讨论】:

    标签: javascript loops reactjs react-jsx


    【解决方案1】:

    如果条件成立,则返回 [ &lt;br /&gt;, &lt;Piece&gt; ] 数组,否则仅返回 Piece 组件。 See the fiddle.

    相关的代码是这样的:

    return <div>{items.map(function (i, index) {
        if (index % 5 === 0) {
            return [ <br key={index + "break"} />, <Item key={index} num={i} /> ];
        }
    
        return <Item key={index} num={i} />;
    })}</div>;
    

    另外,将key 放在您从map 或其他返回类数组实例的方式返回的组件上。这样,React 不需要在每次渲染时取出所有生成的组件并替换它们,而只需在 key 下找到它们并更新它们的属性即可。查看 React 文档中的 Reconciliation 以了解更多信息。

    【讨论】:

    • 非常感谢!这就说得通了。我现在脑子里有个问题,如果我想用 div 包装每 5 个项目,我该怎么做?
    • 请在 Stack Overflow 上发布一个新问题并在评论中链接到它,我很乐意回答。
    • 首先这里有一个 jsfiddle 有一点修复,所以它适用于对象,而不仅仅是数字数组(只是将索引添加到地图循环)jsfiddle.net/s048wnoc。这是我第二个问题的链接,stackoverflow.com/questions/33856949/…,非常感谢,感谢。
    猜你喜欢
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    相关资源
    最近更新 更多