【问题标题】:How can i render the table from the rest api我如何从其余 api 呈现表格
【发布时间】:2021-10-02 11:02:54
【问题描述】:
{
  "firma": {
    "serialNo": 12345,
    "companyName": "facebook",
    "email": "admin@admin",
    "bankNo": 987,
    "adress": "london",
    "faturas": [
      {
        "fid": 123,
        "updateDate": [2021, 12, 14],
        "sellDate": 1241231,
        "price": 1500
      }
    ]
  }
}

这是我从 API 获得的 json。我正在尝试使用 React 为给定的 API 创建一个前端:

class UserComponents extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      users: []
    };
  }

  componentDidMount() {
    UserService.getFatura().then((response) => {
      this.setState({ users: response.data });
    });
  }

  render() {
    return (
      <div>
        <h2 className="text-center">Faturalar</h2>
        <div className="row">
          <table className="table table-striped table-bordered">
            <thread>
              <tr>
                <th>User serialNo</th>
                <th>User companyName</th>
                <th>User email</th>
                <th>User bankNo</th>
                <th>User adress</th>
              </tr>
            </thread>
            <tbody>
              {this.state.users.map((users) => (
                <tr key={users.serialNo}>
                  <td> {users.serialNo}</td>
                  <td> {users.companyName}</td>
                  <td> {users.email}</td>
                  <td> {users.bankNo}</td>
                  <td> {users.adress}</td>
                </tr>
              ))}
            </tbody>
          </table>
        </div>
      </div>
    );
  }
}

export default UserComponents;

问题是我无法将 json 中的 faturas 放到我的表中以做出反应。我尝试了一些代码但没有用我很新,需要帮助来做出反应。请尽可能简单。 注意:firma 和 faturas 是一对多的关系 serialNo 是 faturas 中的外键。

【问题讨论】:

  • 这会以什么方式失败?浏览器的开发控制台有错误吗?在浏览器的调试工具中,是否发出了AJAX请求?服务器的响应是什么?如果你在.then() 回调中执行console.log(response);,控制台会记录什么?
  • 你目前能得到'users.serialNo'等吗?是不是只有 'users.faturas' 有问题?
  • @David 不,这不会失败,它会运行,但是当我尝试添加“faturas”时,它现在失败了,看起来像这样imgur.com/a/iqqSLTJ
  • @AzC 是的,我可以获取用户中的所有内容,但我现在无法获取 faturas 表,它看起来像这样imgur.com/a/iqqSLTJ,但我想要显示所有 faturas,但我无法添加这些
  • @MEF:该屏幕截图与显示的代码不匹配。如果您询问生成该屏幕截图的代码,请将其包含在问题中。除此之外,当您“添加 faturas”时,它是如何失败的?您是否尝试过任何调试?如果您不熟悉如何使用浏览器的调试工具,那将是您的第一步。

标签: javascript json reactjs spring-boot frontend


【解决方案1】:

您的数据有子字段firma。如果你想先打印数据,你必须得到这个字段。

像这样;

{this.state.users.map(({firma}) => ( // javascript can get property like this
  <tr key={firma.serialNo}>
  <td> {firma.serialNo}</td>
  <td> {firma.companyName}</td>
  <td> {firma.email}</td>
  <td> {firma.bankNo}</td>
  <td> {firma.adress}</td>
 </tr>
))}

或者这个;

{this.state.users.map((user) => (
  <tr key={user.firma.serialNo}>
  <td> {user.firma.serialNo}</td>
  <td> {user.firma.companyName}</td>
  <td> {user.firma.email}</td>
  <td> {user.firma.bankNo}</td>
  <td> {user.firma.adress}</td>
 </tr>
))}

如果你想打印faturas,你可以使用这个;

{this.state.users.map((user) => (
  <tr key={user.firma.serialNo}>
  <td> {user.firma.serialNo}</td>
  <td> {user.firma.companyName}</td>
  <td> {user.firma.email}</td>
  <td> {user.firma.bankNo}</td>
  <td> {user.firma.adress}</td>
  <td> {user.firma.faturas.map((fatura) => (<div>
       <p>Fatura ID : {fatura.fid}</p>
       <p>Sell Date: {fatura.sellDate}</p>
       <p>Price: {fatura.price}</p>
     </div>)
  )}</td>
 </tr>
))}

【讨论】:

  • imgur.com/a/iqqSLTJ 我可以获得如图所示的公司数据,但我无法在“公司”中显示“faturas”{“fid”:123,“updateDate”:[2021, 12 , 14], "sellDate": 1241231, "price": 1500 } 我无法在我的 json 中显示这部分
  • faturas 属性是一个数组。你必须迭代它
  • 我编辑了我的答案。你可以看看如何访问faturas
猜你喜欢
  • 1970-01-01
  • 2020-12-11
  • 1970-01-01
  • 2019-05-02
  • 1970-01-01
  • 2011-04-26
  • 1970-01-01
  • 2021-11-02
  • 2015-02-22
相关资源
最近更新 更多