javascript - 在 ReactJS 中使用迭代时如何将 onClick 事件传递给父组件?

标签 javascript reactjs onclick iteration material-ui

我想在点击事件后删除表格行。我已经创建了迭代并显示了删除按钮,但不知道在我的情况下如何将 onClick 事件从父组件传递到子组件。 我尝试将 const row 更改为 component 并像往常一样传递 onClick,但此方法会破坏我的表。

父组件:

class Home extends Component {
 constructor(props) {
 super(props);
 this.state = { data: []};
}

handleDelete{
 alert('here I want to have code to remove row from table')
}

render() {
 return (
  <div>
    <TableTasks data={this.state.data} header={[{ name: "No"}, { name: "Delete" }]} />
  </div>
);
}}

子组件:

const row = (props, i) =>
<TableRow key={`thr-${i}`}>
  <TableRowColumn>
    {props.nameTask}
  </TableRowColumn>
  <TableRowColumn className="DeleteButton">
    <IconButton>
      <DeleteIcon onClick={?????}/>
    </IconButton>
  </TableRowColumn>
</TableRow>;

export const TableTasks = ({ data, header }) => 
<Table>
 <TableHeader>
  <TableRow>
    {header.map((x, i) =>
      <TableHeaderColumn key={`thc-${i}`}>
        {x.name}
      </TableHeaderColumn>
    )}
  </TableRow>
 </TableHeader>
 <TableBody>
  {data.map((x, i) => row(x, i))}
 </TableBody>
</Table>;

最佳答案

步骤:

1- 将 handleDelete 函数从父级传递给子级 TableTasks 组件:

<TableTasks handleDelete={this.handleDelete}  .... />

2- 在父级定义handleDelete:

handleDelete(){....}

3- handleDelete 将在 TableTasks 组件中可用,像数据一样解构它:

export const TableTasks = ({ data, header, handleDelete }) => {...}

4- 现在将 handleDelete 传递给 row 函数:

{data.map((x, i) => row(x, i, handleDelete))}

5- 现在 handleDelete 将可用:

const row = (props, i, handleDelete) => {
   console.log('handleDelete', handleDelete);
   return (
       ....
       <DeleteIcon onClick={handleDelete} />
       ....
   )
}

关于javascript - 在 ReactJS 中使用迭代时如何将 onClick 事件传递给父组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48062580/

相关文章:

javascript - 进度条使用样式更新进度

javascript - 如何在 HTML 中淡入/淡出背景音乐(无 Flash)?

javascript - 使用 Javascript 检索绝对文件路径

reactjs - 在不同的路由器中登录 -ReactJs-

安卓 : Only one button clickable at once

javascript - 带有js代码的Twitter bootstrap轮播幻灯片

javascript - 我应该在构造函数上方或下方包含 module.exports

javascript - React 组件的基于状态的动画

javascript - 使用 onclick 显示某些 DIV

Javascript - ('Click' ) - 错误 - 页面加载时调用