我有一个包含两个组件的React应用。我的子组件有一个带有一些记录的表。每个记录都有一个按钮,我在onclick中调用带有参数(id)的函数(editUser)。在该函数中,我通过道具将该ID发送给Parent组件。该函数已经绑定在构造函数中。但是单击按钮时,控制台会显示 this.props.userId不是函数
子组件:
class UsersTable extends React.Component {
constructor(props) {
super(props);
this.state = {
};
this.editUser = this.editUser.bind(this);
}
editUser(id) {
this.props.userId(id);
}
render() {
return (
<TableBody>
{data
.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)
.map(n => {
return (
<TableRow key={n.id}>
<TableCell className={classes.fixedTd}>
<BorderColorIcon onClick={() => this.editUser(n.userId)} className="action margin-r" />
</TableCell>
</TableRow>
);
})}
</TableBody>
);
}
}
export UsersTable;
父组件:
class CompanyUserMgt extends Component {
constructor(props) {
super(props);
this.state = {
}
}
editUser = (id) => {
console.log("user", id)
}
render() {
return (
<div className="">
<UsersTable
userId={this.editUser}
key={this.state.tableKey}
/>
</div>
)
}
}
export default CompanyUserMgt;
我该如何解决?
答案 0 :(得分:1)
我认为您可以简化事情,您可以在子组件上尝试以下代码吗?
class UsersTable extends React.Component {
constructor(props) {
super(props);
this.state = {
};
}
render() {
return (
<TableBody>
{data
.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)
.map(n => {
return (
<TableRow key={n.id}>
<TableCell className={classes.fixedTd}>
<BorderColorIcon onClick={() => this.props.userId(n.userId)} className="action margin-r" />
</TableCell>
</TableRow>
);
})}
</TableBody>
);
}
}
export UsersTable;