Ich habe diese React-Komponente, die Elemente aus einer Liste (mit einer Kartenfunktion) generiert hat. Jedes dieser Elemente hat eine Schaltfläche. Ich möchte, dass der Onclick-Knopf dieser Taste einen Parameter übergibt, um zu identifizieren, auf welche Taste des Listenelements geklickt wurde.Parameter in ReactJS onclick übergeben
Es sieht in etwa so aus.
var Component = React.createClass({
assignItem: function(item){
this.setState({item:item})
},
render: function(){
var listItems = list.map(function(item){
return <div>{item}
<button onClick={this.assignItem(item)>Click</button>
</div>
})
return <div>{listItems}</div>
}
})
Natürlich funktioniert das nicht. Die Fehlermeldung besagt, dass this.assignItem keine Funktion ist. ich die offizielle weiß Reagieren Dokumentation dies legt nahe:
var handleClick = function(i, props) {
console.log('You clicked: ' + props.items[i]);
}
function GroceryList(props) {
return (
<div>
{props.items.map(function(item, i) {
return (
<div onClick={handleClick.bind(this, i, props)} key={i}>{item}</div>
);
})}
</div>
);
}
ReactDOM.render(
<GroceryList items={['Apple', 'Banana', 'Cranberry']} />, mountNode
);
aber das funktioniert mit einer Funktion außerhalb des Bauteils. Da ich möchte, dass meine Funktion den Zustand manipuliert, möchte ich ihn in der React-Komponente behalten.
Wie mache ich das?
ausgezeichnet! so einfach, und es hat funktioniert! Danke vielmals. –
@MariePelletier, was ist, wenn ich Tag zurückgeben, so muss ich auch preventDefault. Wie übergebe ich ein Ereignis an assignItem? Oder sollte ich einfach immer
'bind' wird Argumente vorgeben, aber immer noch die ursprünglichen Argumente übergeben, so' assignItem' kann ein zweites Ereignis arg als 'function (item, event)' und Aufruf 'event.preventDefault () '. – Aaron