在ReactJS中使用迭代时如何将onClick事件传递给父组件?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在ReactJS中使用迭代时如何将onClick事件传递给父组件?相关的知识,希望对你有一定的参考价值。
我想在点击事件后删除表格行。我已经创建了迭代并显示删除按钮,但不知道在我的情况下如何将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} />
....
)
}
以上是关于在ReactJS中使用迭代时如何将onClick事件传递给父组件?的主要内容,如果未能解决你的问题,请参考以下文章
Reactjs:在onClick方法中传递参数而不会造成性能损失[重复]
如何将 onclick 事件添加到 reactjs 中由 dangerouslysetInnerHtml 呈现的字符串?
如何在 ReactJS Typescript 中 2 分钟后自动发生 onclick