当用户单击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}
/>
)
}
1条答案
按热度按时间xa9qqrwz1#
要在
handleEdit
函数中使用useHistory
,需要将useHistory
挂钩移到组件的顶层,并将history
对象作为参数传递给handleEdit
。或者,您可以使用内嵌箭头函数将
history
对象当做参数传递给handleEdit
。在这两种情况下,都需要确保在呈现
EditIcon
组件的同一组件或组件的子组件中调用useHistory
挂钩。