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

在ReactJs中呈现来自本地JSON(带有动态数据)的数据

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

    "units" 各个对象中的数组可以不同。

    [{
        "title": "title1",
        "units": [{
                "title": "unittitle1",
                "status": "on",
                "utilization": "76.4"
            },
            {
                "title": "unittitle1",
                "status": "on",
                "utilization": "76.4"
            },
            {
                "title": "unittitle1",
                "status": "on",
                "utilization": "76.4"
            },
            {
                "title": "unittitle1",
                "status": "on",
                "utilization": "76.4"
            }
        ]
    },
    {
        "title": "title2",
        "units": [{
                "title": "unittitle1",
                "status": "on"
            },
            {
                "title": "unittitle1",
                "status": "on"
            }
        ]
    }
    

    ]

    import React, { Component } from 'react';
    import hardwareDetailsData from '../../../assets/json/UnitHardwareDetails.json';
    import meter from '../../../assets/images/meter.svg';
    
    class HardwareUnits extends Component {
      constructor() {
        super();
        this.state = {
          hardwareDetailsData: []
        };
      }
    
      render() {
        return hardwareDetailsData.map(hardwareData => (
          <div className="f-14">
            <ul className="list-inline list-pipe">
              <li className="list-inline-item">
                <span className="f-b">{hardwareData.units.title}</span>
                <span className="status-text ml-2 text-success">{hardwareData.units.status}</span>
              </li>
              <li className="list-inline-item">
                <span className="text-warning f-b">{hardwareData.units.utilization}</span>
                <img src={meter} alt="Meter" className="ml-3 icon-meter-size" />
              </li>
            </ul>
          </div>
        ));
      }
    }
    
    export default HardwareUnits;
    

    2 回复  |  直到 6 年前
        1
  •  0
  •   Papi    6 年前

    return hardwareDetailsData.map(({ title, units }) => (
      <div className="title">
        {title}
        units.map({ title, status, utilization}) => (
          <div className="status">{status}</div>
        ));
      </div>
    ));
    

    utilization 如果是这样的话。也可以拆分为组件。

        2
  •  0
  •   Soroush Chehresa TommyF    6 年前

    你的 render 方法如下:

     render() {
        return hardwareDetailsData.map((hardwareItem, index) => (
          <div className="f-14" key={index}>
            <ul className="list-inline list-pipe">
              {
                hardwareItem.units.map((unitItem, index) => (
                  <li className="list-inline-item" key={index}>
                    <span className="f-b">{unitItem.title}</span>
                    <span className="status-text ml-2 text success">{unitItem.status}</span>
                    <span className="text-warning f-b">{unitItem.utilization}</span>
                    <img src={meter} alt="Meter" className="ml-3 icon-meter-size" />
                  </li>
                ))
              }
            </ul>
          </div>
        ));
      }