【问题标题】:How can I fetch data from my REST API to populate Material Table?如何从我的 REST API 中获取数据以填充材料表?
【发布时间】:2020-05-10 12:39:07
【问题描述】:

我正在构建一个应用程序,该应用程序将从 API 请求数据并将其显示在可编辑的表格中,用户可以在其中编辑和更新数据库。我正在使用带有 material-table 的 React。

我遵循了这个codeSandbox 示例,并且所有的硬编码数据都可以正常工作。但是,我想从我的 API 端获取真实数据以显示在表格中。我检查了材料表文档,但它没有解决我的问题。

我在父组件的状态下初始化数据,并将其作为props传递给渲染表格的子组件。

如何实时获取数据?注意我使用的是功能组件。

提前致谢。

【问题讨论】:

  • 嘿,您的响应格式是什么,或者您也可以在此处粘贴您的 API 响应,或者硬编码的数据与您的 API 响应相同?
  • { "message": "检索到所有位置记录。", "totalRecords": 3, "data": [ { "id": "f0669917-7159-4e5c-9ac0-d80bb278792f", " code": "GEO/234/210", "country": "Nigeria", "state": "Lagos", "lga": 2, "landmark": "Urban", "communityName": "Oja", " locationName”:“医院”,“纬度”:66.5678,“经度”:-77.76854,“updatedAt”:“2020-05-11T09:42:45.885Z”,“deletedAt”:null }, { } ] }跨度>

标签: node.js reactjs material-ui fetch-api material-table


【解决方案1】:

这是一个工作代码Codesandbok 我使用假 API 来填充表格。

问题是当组件挂载你的 props.data 是 [] 并且在 Table 组件中你将它设置为

const [gridData, setGridData] = useState({
    data: props.data,
    columns: props.col,
    resolve: () => {},
    updatedAt: new Date()
  });

这里数据将被分配为 [] & 现在当 api 请求发生时 props.data 已填充但您的 useState 已初始化,因此数据仍将是 []。

要解决这个问题,您可以使用 props.data 作为

<MaterialTable
    title="Your Title"
    columns={gridData.columns}
    data={props.data} // use props.data to populate the table
    editable={{
      isEditable: rowData => true,
      isDeletable: rowData => true,
      onRowAdd: onRowAdd,
      onRowUpdate: onRowUpdate,
      onRowDelete: onRowDelete
    }}
/>

或者您可以为数据创建一个单独的状态并使用 useEffect 检查其是否已更新。

【讨论】:

  • 谢谢兄弟。让我试试看。
  • 如果您遇到任何问题,请告诉我。
  • 谢谢萨希尔。我试过了,虽然我不得不稍微修改我的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-08
相关资源
最近更新 更多