在react / mobx中渲染对象列表

时间:2018-09-25 13:30:16

标签: javascript reactjs mobx-react

我的jsx类中有一个对象列表。让我们假设它是一个固定的对象列表

versions = [
{owner: "luca", date: "today", fw: "00"},
{owner: "thomas", date: "tomorrow", fw: "00"},
{owner: "peter", date: "yesterday", fW: "00"},];

我正在尝试在网页上的嵌套div元素中呈现这些对象的值。基本上,这是我代表div的一组行。这是它的html

<div className="fc-revisions-sidebar revisions-panel flex-vertical flex-grow-1">
        <div className="fc-revisions-sidebar-header fc-revisions-sidebar-header-bg-color-brand">
            <div className="fc-revisions-sidebar-title">Version history</div>
        </div>
        <div className="fc-revisions-sidebar-revisions-list-container">
            <div className="fc-revisions-sidebar-revisions-list">
                <div role="rowgroup">
                    <div className="fc-revisions-collapsible-panel" role="button">
                        <div className="fc-revisions-collapsible-panel-container">
                            <div className="fc-revisions-row fc-revisions-row-selected" role="row" aria-selected="true" aria-level="1">
                                <div className="fc-revisions-row-content-wrapper">
                                    <div className="fc-revisions-row-header fc-row-content">
                                        <div className="fc-revisions-row-text-box" rows="1" maxLength="80" aria-multiline="false">
                                            **{version.date}**
                                        </div>
                                    </div>
                                    <div className="fc-revisions-row-content fc-row-content" role="presentation">
                                        <div className="fc-revisions-row-collaborator-list">
                                            <div className="fc-revisions-row-collaborator">
                                                <span className="fc-versions-rown-collaborators-label">Created by **{version.owner}**</span>
                                                <span className="fc-revisions-row-collaborator-name">**{version.fw}**</span>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

我不确定如何在我的组件类中实现它! 从此后的第一个div开始

                  <div role="rowgroup">

我在面板中创建每一行的html代码开始。 我想遍历列表中的对象,并使用该列表中的正确数据创建/填充面板中的每一行

我尝试了十多种方法,但是网页上没有任何显示。我只是不了解如何遍历“版本”中的对象列表以及如何创建/填充正在进行的面板。

2 个答案:

答案 0 :(得分:1)

通常通过map将值数组转换为组件数组来完成迭代。像这样:

versions = [ ... ]

return (
  <div>
    <div>Version History</div>
    {
      versions.map(version =>
        <div key={version.date}>
          {version.date}
        </div>
      )
    }
  </div>
)

请注意,当潜在地使用新值数组重新渲染时,为了使Reacts对帐正常运行,该数组中的外部元素应具有唯一的key属性,以便React可以快速识别任何已删除或已添加的值在下一个渲染的数组中。

答案 1 :(得分:1)

假设您使用const在render内部声明了对象数组。您可以使用.map,.forEach,for循环等方法来迭代数组。在您的情况下,我希望使用.map进行迭代,因为map返回新数组。因此,在地图内部构造jsx元素并返回它们。

现在,返回的jsx元素将放置在versionItems数组中。您可以使用{}之类的表达式在渲染返回中调用它。

render(){
     const versions = [
       {owner: "luca", date: "today", fw: "00"},
       {owner: "thomas", date: "tomorrow", fw: "00"},
       {owner: "peter", date: "yesterday", fW: "00"},];

     const versionItems = versions.map((item, index) => {
      return (
         <div key={"key"+index} role="rowgroup">
              //just get all your property values here using item.owner, item.date etc
        </div>
     )
 });
    return(
         <div>
             {versionItems}
         </div>
    )
}