Ich habe ein onClick
Ereignis in einem ListItem eingerichtet. Dann wurde .bind
für die aufgerufene Methode aufgerufen, um die ID- und Namenswerte des angeklickten Listenelements zu übergeben.Wie Übergeben von Parametern in OnClick-Ereignisbindung?
Die folgende SO question schlug vor, bind zu verwenden, aber das Hinzufügen des onCLick-Ereignisses zum ListItem scheint die Listenbindung zu unterbrechen.
Vor dem Hinzufügen des Click-Ereignisses funktioniert die Listenbereichsbindung an die asset.name
wie erwartet und die Liste ist ausgefüllt.
Auch wenn ich onClick={this._onAssetSelected()
ohne Parameter versuche, funktioniert das Klickereignis nicht.
Frage:
Wie können Sie übergeben Sie Parameter in einer OnClick-Ereignis binden in JSX?
Liste Definition:
<List selectable={true} selected={0}>
{
this.state.data.map(function (asset) {
return (
<ListItem justify="between" onClick={this._onAssetSelected.bind(this, asset.name, asset.id)} >
<span>{asset.name}</span>
</ListItem>
);
})
}
</List>
Methode aus dem Click-Ereignis genannt:
_onAssetSelected(assetName, assetID) {
console.log(assetName);
console.log(assetID);
}
Mit typischen Verschlüssen ist der Weg zu gehen. Ich würde auch komplette Asset-Objekt statt bestimmte Eigenschaften übergeben. – gor181
Also habe ich eine anonyme Funktion wie oben definiert. Die Konsole in dev tools sagt mir 'Uncaught TypeError: Kann die Eigenschaft '_onAssetSelected' von undefined nicht lesen. Ich kann sehen, dass diese Methode in der Klasse definiert ist. Oder verpasse ich hier etwas anderes? –
Sie sollten 'var_this = this' vor dem' return' in render hinzufügen und '_this._onAssetSelected' in der Map verwenden. –