Ich habe eine Seitenkomponente sagen wir HomePage
. Und ich habe zwei zustandslose Komponenten namens List
und ListRow
. Die Idee besteht darin, die Tabelle mit der Liste der Elemente anzuzeigen, und wenn der Benutzer auf eine bestimmte Zeile klickt, die Tabelle ausblenden und die Details dieser bestimmten Zeile anzeigen.Ausführen einer State-Methode aus der zustandslosen Komponente
Also in meiner HomePage
Render-Methode:
<List data={listOfData} onClick={this.clickHanlder} />
Die HomePage
Click-Handler-Methode:
clickHandler(name) {
console.log(name);
}
Und in meiner List
staatenlos Komponente ich dies tun:
const List = ({data, onClick}) => {
return (
<table>
<thead>
<tr>
<td>Name</td>
</tr>
</thead>
<tbody>
{data.map(el =>
<ListRow key={el.id} item={el} onClick={onClick} />
)}
</tbody>
</table>
);
}
Und in mein ListRow
stat eless Komponente ich dies tun:
const ListRow = ({item, onClick}) => {
return (
<tr>
<td><a href="#" onClick={onClick(el.name)}>{el.name}</a></td>
</tr>
);
}
Die Click-Handler-Methode in den HomePage
ausführt, sobald die Seite geladen wird, ohne auch nur auf der Zeile klicken. Wenn ich auf die Zeile klicke, passiert nichts.
Ich bin fest, wie und wo das Click-Ereignis zu behandeln, so dass ich die Tabelle ausblenden und die Details der Zeile anzeigen. Ich sollte auch Close/Back-Taste implementieren, um die Tabelle anzuzeigen und die Details zu verbergen.
Was ich bis jetzt getan habe, ist die Implementierung der Click-Event-Methode in HomePage
, die ihren Zustand aktualisieren und diese Methode bis zur ListRow
zustandslosen Komponente übergeben wird. Aber wenn ich die App selbst lade, wird das click-Ereignis ausgeführt. Ich bin mir nicht sicher, wie ich damit richtig umgehen soll.
Wo ist das Klickereignis? –
@IlanHasanov: Das ist, wo ich verwirrt bin, wo zu implementieren. Ich habe versucht, die Click-Event-Methode in der 'HomePage' zu implementieren und die Requisiten an' List' zu übergeben und dann 'List' an' ListRow' zu übergeben. Aber es funktioniert nicht. –