javascript - 如何将参数传递给函数然后在函数中使用它?
问题描述
我创建了一个可重用的表格组件,我将 (headerArray, dataArrayObject, addEditButton ) 作为来自父组件的道具传递。
使用下面编写的代码可以很好地创建表。
const Table = ({tableData,headingColumns,addEditButton}) => { const onEditHandler = (rowDetail) =>{ console.log(rowDetail); console.log("clicked"); } const data = tableData.map((row,index) =>{ let rowData = []; let i = 0; for(const key in row){ rowData.push({ key:headingColumns[i], val:row[key] }) i++; } return <tr key = {index}> {rowData.map((data,index) => <td key = {index} data-heading = {data.key}>{data.val}</td>)} {addEditButton && <td> <button className = "btn btn-outline-dark btn-sm" onClick ={(row)=>onEditHandler(row)}> <EditIcon color="secondary"/> </button> </td>} </tr> }) return ( <div className = "table-container"> <table className = {tableClass} style = {{backgroundColor :"rgba(0,0,0,0.4)",fontSize : "12px"}}> <thead> <tr> {headingColumns.map((col,index)=>( <th key = {index}>{col}</th> ))} </tr> </thead> <tbody> {data} </tbody> </table> </div> ) }
但是,问题出在 onEditHandler 上,我想将特定的数据作为参数传递给 onClick 函数,我在函数上调用该函数我没有收到我期望对象的数据,而是接收 SyntheticBaseEvent 作为参数值通过了。 .
虽然我的功能工作正常,但我也得到了我在功能中提到的 Clicked 控制台。
解决方案
你需要一个像这样的高阶函数:
const onEditHandler = rowDetail => nativeEvent => {
console.log(rowDetail);
console.log(nativeEvent);
}
然后在 JSX 中:
onClick={onEditHandler(row)}
其他解决方案:只是不要给回调参数命名,以便row
引用row
您所期望的:
onClick={() => onEditHandler(row)}
推荐阅读
- python - 如何在窗口上使用 qiskit gpu?
- angular - Ionic-5 apk 构建失败
- android - 单击共享按钮后如何处理 WebView 中的外部链接?
- optimization - 如何以最快的方式从列表中找到不同的毕达哥拉斯三元组?
- node.js - 如何访问 Heroku 上的 MERN 应用节点服务器(localhost)?
- javascript - JavaScript 推送已使用 map 填充的数组创建了一个嵌套的二维数组而不是一维数组
- haproxy - 具有后端状态的 HAPROXY 初始化 - DOWN
- javascript - iframe多级嵌套时cookie丢失在同一主机
- python-3.x - 是否有资源可以显示与我的键盘相关的所有键盘键码?
- java - 判断两棵二叉树是否相似