【问题标题】:React/Javscript how to loop through json file and displayReact / Javascript如何循环遍历json文件并显示
【发布时间】:2020-05-18 04:37:59
【问题描述】:

我目前有一个包含许多人数据的 json 文件。格式如下:

    '1': {
        "name": Max
        "age": 8

    },

    '2':
        ....

接下来,我想在我的函数 Foo() 中将这些人显示为链接。我写了下面的函数。

 import myData from './.../data.json'


 function Foo (){
    return (
        <div>
            <li>

                <Link to={`${url}/1`>{myData[1].name}</Link>}

            </li>
        </div>
    );
}

到目前为止,我都是手动完成的。现在,我想做的是以某种方式创建一个循环并为所有人创建链接。我正在考虑使用 'map()' 和 'Object.entries()' 但我不确定如何以及在何处放置它们。我应该为他们创建一个新功能吗?我不确定....

【问题讨论】:

  • 这个json结构是你控制的吗?如果是这样,您应该将其转换为对象数组,而不是以数字为键的对象对象。然后,您可以只映射数组并显示项目。

标签: javascript html json reactjs


【解决方案1】:

您可以通过在 myData 上调用 Object.keys 并将键映射到链接来实现此目的。

import myData from './.../data.json'


function Foo (){
  return (
    <div>
        <li>
          {Object.keys(myData).map(key => <Link to={`${url}/1` key={key}>{myData[key].name}</Link>)}
        </li>
    </div>
);

这将遍历所有键("1""2" 等...)。您可以使用myData[key] 获取实际项目。不要忘记在Link 上设置key 属性。如果您稍后决定此数据是动态的,这将有助于限制所需 DOM 操作的数量。

【讨论】:

  • 太棒了。所以这行得通。如何在每个名称之间添加换行符?
  • 不需要对象键,只是让它复杂化,而是使用Object.values()然后&lt;Link to={`${url}/1`&gt;{obj.name}&lt;/Link&gt;}
  • @EugenSunic 注意 Object.values 在 IE11 中不受支持,也不要忘记在 Link 上设置 key 属性 - 为此对象键可能更合适.
  • @DarrelGulseth 您可能会通过 HTML/CSS 进行介绍,因为这更像是一个演示问题。默认情况下,列表项彼此相邻呈现。例如,您可以使用 CSS 将 display: block 设置为 li 以使其垂直呈现。
猜你喜欢
  • 2022-12-09
  • 2020-06-12
  • 1970-01-01
  • 1970-01-01
  • 2019-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-06
相关资源
最近更新 更多