Wenn Sie ES6 verwenden, finden Sie hier einen einfachen Beispielcode:
import React from 'wherever_react_is';
class TestApp extends React.Component {
getComponent(event) {
console.log('li item clicked!');
event.currentTarget.style.backgroundColor = '#ccc';
}
render() {
return(
<div>
<ul>
<li onClick={this.getComponent.bind(this)}>Component 1</li>
</ul>
</div>
);
}
}
export default TestApp;
In ES6-Klassenkörpern benötigen Funktionen nicht mehr das Schlüsselwort 'function' und müssen nicht durch Kommas getrennt werden. Wenn Sie möchten, können Sie auch die Syntax => verwenden.
Hier ist ein Beispiel mit dynamisch erstellten Elementen:
import React from 'wherever_react_is';
class TestApp extends React.Component {
constructor(props) {
super(props);
this.state = {
data: [
{name: 'Name 1', id: 123},
{name: 'Name 2', id: 456}
]
}
}
getComponent(event) {
console.log('li item clicked!');
event.currentTarget.style.backgroundColor = '#ccc';
}
render() {
<div>
<ul>
{this.state.data.map(d => {
return(
<li key={d.id} onClick={this.getComponent.bind(this)}>{d.name}</li>
)}
)}
</ul>
</div>
);
}
}
export default TestApp;
Beachten Sie, dass jedes dynamisch erstellte Element einen eindeutigen Referenzschlüssel haben sollte.
Wenn Sie das eigentliche Datenobjekt (und nicht das Ereignis) an Ihre onClick-Funktion übergeben möchten, müssen Sie dies an Ihre Bindung übergeben. Beispielsweise:
Neue onClick-Funktion:
getComponent(object) {
console.log(object.name);
}
Übergabe des Datenobjekts:
{this.state.data.map(d => {
return(
<li key={d.id} onClick={this.getComponent.bind(this, d)}>{d.name}</li>
)}
)}
event.currentTarget.style.backgroundColor = '#ccc';sei denn, Sie verstehen wirklich, was Sie tun (meistens, während Sie Widgets von Drittanbietern integrieren).