为数据网格中的每一行调用的函数,尽管我只想在反应中调用它 onClick
function called for every row in the datagrid although I want to call it only onClick in react
我得到了这个功能:
const DataEdit = ({id}) => {
console.log(id)
}
我的 DataGrid 中的这一列(从@miu/x-data-grid 导入):
{
field:'Delete',
headerName:'Delete',
width:100,
sortable:false,
disableClickEventBubbling:true,
renderCell: (params) => {
return(
<div>
<IconButton
aria-label="add an alarm"
onClick ={DataEdit(params)}
>
<Delete
color="error"
style={{cursor:'pointer'}}
/>
</IconButton>
</div>
)
}
},
出于某种原因,DataEdit 函数会为页面中 DataGrid 中的每一行发送控制台日志,首先,这是为什么?其次,如何才能使其仅在单击 IconButton 时才起作用。
提前致谢。
在您创建它时,它是一个普通函数,因此它将加载到堆栈中并作为组件渲染执行(它将 return 值赋给 onClick)。另一方面,如果您将其重写为:
onClick ={() => DataEdit(params)}
它会创建一个DataEdit函数并将其赋值给onClick,因此只有在点击时才会执行。
我得到了这个功能:
const DataEdit = ({id}) => {
console.log(id)
}
我的 DataGrid 中的这一列(从@miu/x-data-grid 导入): {
field:'Delete',
headerName:'Delete',
width:100,
sortable:false,
disableClickEventBubbling:true,
renderCell: (params) => {
return(
<div>
<IconButton
aria-label="add an alarm"
onClick ={DataEdit(params)}
>
<Delete
color="error"
style={{cursor:'pointer'}}
/>
</IconButton>
</div>
)
}
},
出于某种原因,DataEdit 函数会为页面中 DataGrid 中的每一行发送控制台日志,首先,这是为什么?其次,如何才能使其仅在单击 IconButton 时才起作用。 提前致谢。
在您创建它时,它是一个普通函数,因此它将加载到堆栈中并作为组件渲染执行(它将 return 值赋给 onClick)。另一方面,如果您将其重写为:
onClick ={() => DataEdit(params)}
它会创建一个DataEdit函数并将其赋值给onClick,因此只有在点击时才会执行。