首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过重复单个响应组件在多个表中显示单个json文件的数据

如何通过重复单个响应组件在多个表中显示单个json文件的数据
EN

Stack Overflow用户
提问于 2022-12-04 11:15:41
回答 1查看 18关注 0票数 0

我是反应学的初学者。我想要的是,我有一个组件Datatable.js,我想通过配置一个JSON的数据在该组件中创建三个表,应该只有三个表的一个组件,但是条件是表中的值必须不同--每个表中的值必须不同--比如在第一个表中--名称、电子邮件、号码;第二个表中--电子邮件、城市号和第三个表中的值--名称、专业、数字、城市。我希望通过在Datatable.js中三次重复App.js组件来执行所有这些操作,这样三个表就可以呈现,而不是在Datatable.js中编写三次表元素。

所以请告诉我怎么做。

我已经获得了数据状态下的JSON值,并且我知道它可以通过map()方法显示,但问题是如何在每个重复组件中发送这些JSON文件值,以及Datatable.js如何获得它,以便像我前面提到的那样,在每个表中显示不同的值?

data.json

代码语言:javascript
复制
[
    {
      "person": {
        "name": "Viswas Jha",
        "avatar": "images/profile.jpg"
      },
      "city": "Mumbai",
      "email": "vishwasjha@gmail.com",
      "number": 123456,
      "profession": "UI Designer"
    },
    {
      "person": {
        "name": "Damini Pandit",
        "avatar": "images/profile.jpg"
      },
      "city": "Delhi",
      "email": "daminipandit@gmail.com",
      "number": 1345645,
      "profession": "Front-end Developer"
    },
    {
      "person": {
        "name": "Nihal Lingesh",
        "avatar": "images/profile.jpg"
      },
      "city": "Delhi",
      "email": "nihallingesh@gmail.com",
      "number": 12345689,
      "profession": "UX Designer"
    },
    {
      "person": {
        "name": "Akash Singh",
        "avatar": "images/profile.jpg"
      },
      "city": "Kolkata",
      "email": "akashsingh@gmail.com",
      "number": 1234566,
      "profession": "Backend Developer"
    }
    
  ]

App.js

代码语言:javascript
复制
import Datatable from './Datatable';
import '../node_modules/bootstrap/dist/css/bootstrap.min.css';
import {useState, useEffect} from 'react';
import './App.css';

const fetchData = new Promise((myResolve, myReject) => {
    let req = new XMLHttpRequest();
    req.open('GET', "./data.json");
    req.onload = function() {
    if (req.status == 200) {
      return myResolve(req.response);
    } else {
      return myReject("File not Found");
    }
  };
  req.send();
});


function App() {
  
  const [data, setData] = useState([]);

  useEffect(() => {
    fetchData.then((jsonData) => setData(JSON.parse(jsonData)));
  }, []);

  return (
    <>
      <Datatable Data = {data} />;
      <Datatable Data= {data}/>;
      <Datatable Data= {data}/>;
    </>
  );
}

export default App;

Datatable.js

代码语言:javascript
复制
import React from 'react';
import Grid from '@material-ui/core/Grid';


export default function Datatable({Data}) {

    
    return (
        <div className='main text-center '>
            <h1 className='head py-3'>Datatable</h1>
            <Grid container spacing={1} className='contain m-auto mt-5 ps-5 pb-4'>
                    <table className="table table-striped">
                        <thead>
                            <tr>
                            <th scope="col">Name</th>
                            <th scope="col">Email</th>
                            <th scope="col">Number</th>
                            </tr>
                        </thead>
                        <tbody> 
                        {
                            Data.map((elem, ind)=>{
                            return (
                                <tr key={ind}>
                                    
                                    <td className='d-flex justify-content-between align-items-center'>
                                    <img src={elem.person.avatar} alt="avatar"/>
                                    {elem.person.name}</td>
                                    <td>{elem.email}</td>
                                    <td>{elem.number}</td>
                                  
                                </tr>
                            )
                            })
                        }
                            
                        </tbody>
                    </table>   
            </Grid>
        </div>
        );

    }
EN

回答 1

Stack Overflow用户

发布于 2022-12-04 13:56:23

用这个更新您的代码。

App.js

代码语言:javascript
复制
import Datatable from './Datatable';
import '../node_modules/bootstrap/dist/css/bootstrap.min.css';
import {useState, useEffect} from 'react';
import './App.css';

const fetchData = new Promise((myResolve, myReject) => {
    let req = new XMLHttpRequest();
    req.open('GET', "./data.json");
    req.onload = function() {
    if (req.status == 200) {
      return myResolve(req.response);
    } else {
      return myReject("File not Found");
    }
  };
  req.send();
});


function App() {
  
  const [data, setData] = useState([]);

  useEffect(() => {
    fetchData.then((jsonData) => setData(JSON.parse(jsonData)));
  }, []);

  return (
    <>
      <Datatable data = {data} />
    </>
  );
}

export default App;

DataTable.js

代码语言:javascript
复制
import React from 'react';
import Grid from '@material-ui/core/Grid';


export default function Datatable({props}) {

    
    return (
        <div className='main text-center '>
            <h1 className='head py-3'>Datatable</h1>
            <Grid container spacing={1} className='contain m-auto mt-5 ps-5 pb-4'>
                    <table className="table table-striped ">
                        <thead>
                            <tr>
                            <th scope="col">Name</th>
                            <th scope="col">Email</th>
                            <th scope="col">Number</th>
                            </tr>
                        </thead>
                        <tbody> 
                        {
                            props.data.map((elem, ind)=>{
                            return (
                                <tr key={ind}>
                                    
                                    <td className='d-flex justify-content-between align-items-center'>
                                    <img src={elem.person.avatar} alt="avatar"/>
                                    {elem.person.name}</td>
                                    <td>{elem.email}</td>
                                    <td>{elem.number}</td>
                                  
                                </tr>
                            )
                            })
                        }
                            
                        </tbody>
                    </table>
                    <table className="table table-striped ">
                            <thead>
                                <tr>
                                <th scope="col">Email</th>
                                <th scope="col">City</th>
                                <th scope="col">Number</th>
                                </tr>
                            </thead>
                            <tbody> 
                            {
                                props.data.map((elem, ind)=>{
                                return (
                                    <tr key={ind}>
                                        <td>{elem.email}</td>
                                        <td>{elem.city}</td>
                                        <td>{elem.number}</td>
                                    </tr>
                                )
                                })
                            }
                                
                            </tbody>
                        </table>
                        <table className="table table-striped ">
                                <thead>
                                    <tr>
                                    <th scope="col">Name</th>
                                    <th scope="col">Profession</th>
                                    <th scope="col">Number</th>
                                    <th scope="col">City</th>
                                    </tr>
                                </thead>
                                <tbody> 
                                {
                                    props.data.map((elem, ind)=>{
                                    return (
                                        <tr key={ind}>
                                            <td>{elem.person.name}</td>
                                            <td>{elem.profession}</td>
                                            <td>{elem.number}</td>
                                            <td>{elem.city}</td>
                                          
                                        </tr>
                                    )
                                    })
                                }
                                    
                                </tbody>
                            </table>
            </Grid>
        </div>
        );

    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74675024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档