如何使用材质表实现远程数据的乐观渲染?

2023-12-10

我正在使用图书馆材料表对于我的应用程序中的数据表。我将 data 属性设置为使用 this.state.data 中的数据,并添加行将使用 setState 在我的表上更新。但是切换到远程数据后,添加行后表不会更新。还有其他方法可以通过远程数据实现这一目标吗?

import React, {Component} from "react";
import MaterialTable from "material-table";
import Add from "@material-ui/icons/Add";
import Clear from "@material-ui/icons/Clear";
import Check from "@material-ui/icons/Check";
import Edit from "@material-ui/icons/Edit";
import FirstPage from "@material-ui/icons/FirstPage";
import ChevronRight from "@material-ui/icons/ChevronRight";
import LastPage from "@material-ui/icons/LastPage";
import ChevronLeft from "@material-ui/icons/ChevronLeft";
import Search from "@material-ui/icons/Search";
import ReactDOM from "react-dom";

import "./styles.css";

class App extends Component {
  state = {
    data: []
  }
  render() {
  return (
    <MaterialTable
      columns={[
        {
          title: "Avatar",
          field: "avatar",
          render: rowData => (
            <img
              style={{ height: 36, borderRadius: "50%" }}
              src={rowData.avatar}
            />
          )
        },
        { title: "Id", field: "id" },
        { title: "First Name", field: "first_name" },
        { title: "Last Name", field: "last_name" }
      ]}
      icons={{
        Add: () => <Add />,
        Check: () => <Check />,
        Clear: () => <Clear />,
        Edit: () => <Edit />,
        FirstPage: () => <FirstPage />,
        NextPage: () => <ChevronRight />,
        LastPage: () => <LastPage />,
        PreviousPage: () => <ChevronLeft />,
        ResetSearch: () => <Clear />,
        Search: () => <Search />
      }}

      // If this is an array from state(ie. this.state.data) then it works.
      data={query =>
        new Promise((resolve, reject) => {
          let url = "https://reqres.in/api/users?";
          url += "per_page=" + query.pageSize;
          url += "&page=" + (query.page + 1);
          fetch(url)
            .then(response => response.json())
            .then(result => {
              resolve({
                data: result.data,
                page: result.page - 1,
                totalCount: result.total
              });
            });
        })
      }
      editable={{
        onRowAdd: newData =>
          new Promise((resolve, reject) => {
            setTimeout(() => {
              {
                const data = this.state.data;
                data.push(newData);
                this.setState({ data }, () => resolve());
              }
              resolve();
            }, 1000);
          })
      }}
      title="Remote Data Example"
    />
  )
    }
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

有一个解决方案调用管理材料表所有查询事件的函数

您可以创建对表的 React 引用来完成此操作。在那一刻您就可以访问该功能了。 如果需要,您可以使用它将值直接传递给函数。

这些是步骤: 1-创建一个值并分配React.createRef() 让 tableRef=React.createRef()

2- 将其分配给名为 tableRef 的材质表属性

表参考={表参考}

3-然后,当您需要更新表时,您可以不带任何参数调用函数 onQueryChange() 。

tableRef.current.onQueryChange()

例如:

`async apiDelete(IDs) {
try {
  await Service.delete(IDs);
  this.state.tableRef.current.onQueryChange();
} catch (e) {
  console.log("Error Deleting" + e);
}

}`

您可以做其他事情,例如: this.state.tableRef.current.onQueryChange({filters: "value"});

请创建一个 console.log(tableRef) 以查看您可以执行的所有操作。

如果这对您有帮助,请告诉我 问候

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用材质表实现远程数据的乐观渲染? 的相关文章

  • 在Google云机器学习上部署Retrained inception模型

    我设法使用通用初始模型重新训练我的特定分类模型tutorial 我现在想将其部署在谷歌云机器学习上steps 我已经设法将其导出为 MetaGraph 但我无法获得正确的输入和输出 在本地使用它 我的图表入口点是DecodeJpeg con
  • OpenXML Sax 方法可将 100K+ 行快速导出到 Excel

    我一直在尝试提高写入 xlsx 的 SAX 方法的性能 我知道 Excel 中的行数限制为 1048576 行 我只达到过这个极限几次 在大多数情况下 我只写出大约 125K 到 250K 行 一个大数据集 我尝试过的代码似乎没有那么快 因
  • 如何过滤 top_hits 指标聚合结果 [Elasticsearch]

    我想按地址分组 然后按日期获取最新地址 然后按状态过滤此结果 ex address A date 10 10 1991 status sold address A date 10 10 2016 status active address
  • 外连接 Pandas 数据框

    我正在尝试外部连接 在 df1 上 两个 pandas 数据框 以下是示例数据框 df1 Index Team 1 Team 2 Team1 Score Team2 Score 0 A B 25 56 1 B C 30 55 2 D E 3
  • 向图例添加额外的项目

    我有以下数据 trait beta se p analysis signif trait1 0 078 0 01 9 00E 13 group1 1 trait2 0 076 0 01 1 70E 11 group1 1 trait3 0
  • Amazon Cognito 将 IAM 角色分配给用户池中的组并与身份池集成

    我正在尝试使用用户池中新添加的用户组并将其与联合身份集成 我按照以下步骤操作 在用户池中创建组 其中在 IAM 中创建的角色具有单独的角色 政策 创建用户并将其添加到用户组 创建一个身份池并在下面添加该 Cognito 提供程序身份验证提供

随机推荐