reactjs 如何在MUI数据网格渲染单元格中使用useHistory

5lhxktic  于 2022-12-03  发布在  React
关注(0)|答案(1)|浏览(179)

当用户单击MUI Datagrid中的按钮时,我试图将数据传递到另一个页面。我正在使用react-router-dom中的useHistory,但我面临的问题是如何实现useHistory。
由于错误显示为“handleEdit既不是React函数组件,也不是自定义React Hook函数”,我如何让useHistory在我的函数handleEdit中工作?

表格组件

import React from "react";
import { useHistory } from "react-router-dom";
import { DataGrid} from "@mui/x-data-grid";
import EditIcon from "@mui/icons-material/Edit";

const columns = [
  {
    field: "id",
    headerName: "Id",
  },
  {
    field: "actions",
    headerName: "Actions",
    width: 110,
    renderCell: (params) => (
      <EditIcon onClick={() => handleEdit(params)} />
    )
  }
]

function handleEdit(params) {
  const history = useHistory();
  history.push({
    pathname: "/home/Search",
    state: params
  })
}

export default function Table({ rows }) {
  return (
    <DataGrid
      rows={rows}
      columns={columns}
    />
  )
}
xa9qqrwz

xa9qqrwz1#

要在handleEdit函数中使用useHistory,需要将useHistory挂钩移到组件的顶层,并将history对象作为参数传递给handleEdit
或者,您可以使用内嵌箭头函数将history对象当做参数传递给handleEdit
在这两种情况下,都需要确保在呈现EditIcon组件的同一组件或组件的子组件中调用useHistory挂钩。

相关问题