Próbuję przekazać funkcję do mojego komponentu potomnego. Dla każdego komponentu podrzędnego, gdy użytkownik je kliknie, zostanie wywołana funkcja onclick. Ta funkcja onclick jest zapisywana w komponencie nadrzędnym. KomponentReact: Przekaż funkcję komponentowi potomnemu
nadrzędny:
class AgentsList extends React.Component {
constructor(props) {
super(props);
}
handleClick(e) {
e.preventDefault();
console.log(this.props);
}
render() {
const { agents } = this.props;
...
var agentsNodes = agents.map(function(agent, i) {
if(agent.id_intervention == "") {
return (
<Agent agent={agent} key={i} ticket={t} id={row_names} onClick={this.handleClick.bind(this)} />
);
}
});
return (
<div id="agents">
<div className="agents-title">
<h3>Title</h3>
</div>
{agentsNodes}
</div>
);
}
}
komponent dziecka:
class Agent extends React.Component {
constructor(props) {
super(props);
}
render() {
const { agent, t } = this.props;
return (
<Link to='/' onClick={this.props.onClick}>
...
</Link>
);
}
}
Na tej linii: <Agent agent={agent} key={i} ticket={t} id={row_names} onClick={this.handleClick.bind(this)} />
To znaczy, że nie jest zdefiniowana handleClick ... Jak mogę sovle ten problem ?
Dziękujemy za odpowiedź.
można również użyj 'onClick = {() => this.handleClick()}'. –
@ZhenyangHua w rzeczywistości jest to lepsze podejście, więc nie musisz już używać "bind". –
co, jeśli jest jak 8 funkcji –