функция вызывается для каждой строки в сетке данных, хотя я хочу вызвать ее только один раз в react

#reactjs #react-hooks #datagrid #material-ui

Вопрос:

У меня есть эта функция:

 const DataEdit = ({id}) =gt; {  console.log(id) }  

и этот столбец внутри моей сетки данных(импортирован из @miu/x-data-grid): {

 field:'Delete',  headerName:'Delete',  width:100,  sortable:false,  disableClickEventBubbling:true,  renderCell: (params) =gt; {  return(   lt;divgt;  lt;IconButton  aria-label="add an alarm"  onClick ={DataEdit(params)}  gt;  lt;Delete  color="error"  style={{cursor:'pointer'}}  /gt;  lt;/IconButtongt;  lt;/divgt;  )  } },  

по какой-то причине функция DataEdit отправляет журнал консоли для каждой строки в сетке данных на странице, прежде всего, почему это так? во-вторых, как я могу заставить его работать только тогда, когда я нажимаю кнопку значка. Заранее спасибо.

Комментарии:

1. Заменить onClick ={DataEdit(params)} на onClick ={() =gt;DataEdit(params)}

Ответ №1:

Как вы его создали, это обычная функция, поэтому она будет загружена в стек и выполнена в виде отрисовки компонентов (она вернет значение onClick). С другой стороны, если вы перепишете его как:

 onClick ={() =gt; DataEdit(params)}  

он создаст функцию DataEdit и назначит ее onClick, таким образом, она будет выполняться только при нажатии.