Ich habe gerade begonnen, mit ReactJS zu arbeiten, und ich kann nicht herausfinden, wie ich OnClick-Ereignisse innerhalb einer Map-Funktion arbeiten, die ein paar ähnliche Elemente macht. Wenn ich onClick = {this.someMethodName} in den untergeordneten Elementen nicht verwende, funktioniert alles einwandfrei. Daher nehme ich an, dass das Schlüsselwort 'this' nicht mehr auf das übergeordnete Element verweist.ReactJS onClick-Ereignis in Kartenfunktion, dann rufen Elternfunktion
Hier ist mein Code, die eine einfache menubar macht:
var SupplierBarComponent = React.createClass({
doSomething: function() {
console.log("aaaaaaaah");
},
render: function() {
const suppliers = this.props.data.map(function(supplier){
return (
<option onClick={this.doSomething} key={supplier.id}>{supplier.name}</option>
);
}, this);
return(
<div>{suppliers}</div>
);
}
Wie kann ich es funktioniert? Ich habe ein paar ähnliche Fragen * gelesen, aber ihre Lösungen funktionierten nicht für mich, oder ich konnte sie nicht funktionieren lassen.
*: React onClick inside .map then change data in another sibling component "this" is undefined inside map function Reactjs Pass props to parent component in React.js
Wenn Sie dies in der Karte Funktion console.log ist es die Komponente Objekt zurückgeben? – finalfreq
Ja, tut es. Wenn ich es durch console.log (this.doSomething) - also ohne() s anrufe, druckt es die Funktion selbst: 3models.jsx: 9() { console.log ("aaaaaaaah"); } Wenn ich es mit Klammern anrufe, druckt es zuerst 'undefined', aber die Funktion wird immer noch aufgerufen, und 'aaaah' wird ausgedruckt. – handris
Müssen Sie 'this.doSomething.bind (this)' ?? abhängig von Ihrer Verwendung dieses Innen DoSomething? Außerdem sollten Sie ein synthetisches Ereignisobjekt erhalten, das mehr Informationen enthält ... – Tracker1