Admin on Rest onClick 在渲染时被调用而不是在点击时被调用
Admin on Rest onClick being called on render and not on click
我遇到的问题是我有一个按钮:
const LogActions = ({ resource, filters, displayedFilters, filterValues, basePath, showFilter, refresh, record }) => (
<CardActions style={cardActionStyle}>
<RaisedButton primary label="Cancel" onClick={HandleClick(record["id"])} />/>
</CardActions>
);
此按钮在列表中的使用方式如下:
export const LogList = (props) => (
<List {...props} perPage={100} title="Logs and Reports" filters={< FileFilter/>}>
<Datagrid>
<TextField source="inputfile" label="Input File" />
<TextField source="cycle" label="Cycle" />
<TextField source="job" label="Job" />
<TextField source="name" label="File Name" />
<ShowButton/>
<LogActions/>
</Datagrid>
</List>
);
这是 HandleClick:
const HandleClick = (id) => {
fetch(`controller_service/archivedfiles/${id}`, { method: 'GET', body:{} })
.then(() => {
// do stuff
})
.catch((e) => {
console.error(e);
//error
});
}
好吧,我的问题是,每当我转到此页面时,它都会创建数据网格,但在呈现按钮时它会调用 HandleClick
,然后在我单击按钮之前获取该数据,当我点击按钮时没有任何反应。有人可以解释我做错了什么吗?
正如 wesley6j 所说,当您为其分配参数时,该函数会被调用。
避免这种情况的一种方法是使用 .bind(this,params)
或将 HandleClick
包装在另一个函数中,如下所示:
onClick={() => HandleClick(record["id"])}
我遇到的问题是我有一个按钮:
const LogActions = ({ resource, filters, displayedFilters, filterValues, basePath, showFilter, refresh, record }) => (
<CardActions style={cardActionStyle}>
<RaisedButton primary label="Cancel" onClick={HandleClick(record["id"])} />/>
</CardActions>
);
此按钮在列表中的使用方式如下:
export const LogList = (props) => (
<List {...props} perPage={100} title="Logs and Reports" filters={< FileFilter/>}>
<Datagrid>
<TextField source="inputfile" label="Input File" />
<TextField source="cycle" label="Cycle" />
<TextField source="job" label="Job" />
<TextField source="name" label="File Name" />
<ShowButton/>
<LogActions/>
</Datagrid>
</List>
);
这是 HandleClick:
const HandleClick = (id) => {
fetch(`controller_service/archivedfiles/${id}`, { method: 'GET', body:{} })
.then(() => {
// do stuff
})
.catch((e) => {
console.error(e);
//error
});
}
好吧,我的问题是,每当我转到此页面时,它都会创建数据网格,但在呈现按钮时它会调用 HandleClick
,然后在我单击按钮之前获取该数据,当我点击按钮时没有任何反应。有人可以解释我做错了什么吗?
正如 wesley6j 所说,当您为其分配参数时,该函数会被调用。
避免这种情况的一种方法是使用 .bind(this,params)
或将 HandleClick
包装在另一个函数中,如下所示:
onClick={() => HandleClick(record["id"])}