Ich habe gerade angefangen, die Grundlagen von ReactJs zu suchen. Das folgende ist meine Komponente, um die Liste der Busse anzuzeigen. Was ich genau will ist, ich möchte bearbeiten/löschen Operationen über Busse. Aber ich bin nicht in der Lage BusID des entsprechenden Busses zu meinen Edit/Delete-Methoden zu übergeben.ReactJs - Parameter an Event Handler übergeben
Es folgt Komponentencode
import React, {Component} from "react";
import { withRouter } from 'react-router-dom'
import {Table,Badge, Label,FormGroup,Container, Row, Col, CardGroup, Card, CardBlock,CardHeader, Button, Input, InputGroup, InputGroupAddon} from "reactstrap";
import {appSettings} from '../../../../Utils/Util.js';
import Pagination from "react-js-pagination";
var axios = require('axios');
class BusList extends React.Component {
constructor(props) {
super(props);
this.state = {
busList:[]
};
this.loadBuses = this.loadBuses.bind(this);
}
componentWillMount() {
this.loadBuses();
}
loadBuses() {
var url = ‘my-api-complete-url-here’;
axios.get(url)
.then((result) => {
var key = 0;
var buses = result.data.map(function(bus,i){
return <tr key={key++}>
<td key={key++}>{bus.id}</td>
<td key={(key++)}>{bus.number}</td>
<td key={(key++)}>
<Button onClick={(e)=>this.editBus(e, bus.id)}>Edit</Button>
<Button onClick={(e)=>this.deleteBus(e, bus.id)}>Delete</Button>
</td>
</tr>
});
this.setState({busList: buses});
})
.catch(function (error) {
console.log(error);
});
}
render() {
return (
<div className="animated fadeIn">
<Table hover responsive striped>
<thead>
<tr>
<th>Sr #</th>
<th>Bus Number</th>
<th>Action</th>
</tr>
</thead>
<tbody>
{this.state.busList}
</tbody>
</Table>
</div>
);
}
editBus(id, e) {
console.log(‘Edit - Bus Id = ' +id);
}
deleteBus(id, e) {
console.log('Delete - Bus Id = ' +id);
}
}
export default BusList;
Aber wenn auf Schaltfläche Bearbeiten angezapft, erhalte ich diesen Fehler ( Screenshot)
Danke @Sajal. Kannst du bitte ein bisschen mehr von deiner Aussage erklären "außerdem musst du (das) am Ende der Kartenfunktion binden". Ich bekomme immer noch Fehler "Kann Eigenschaft 'editBus' von undefined nicht lesen" –
Sie verwenden normale Funktion in 'map', so dass standardmäßig' this' innerhalb von Callback der Karte nicht auf Ihre Komponente zeigen. Sie können entweder die Pfeilfunktion verwenden. zB 'result.data.map ((bus, i) => {...})' oder muss zB 'result.data.map (function (bus, i)) { // ... hiercode binden } .bind (this)) ' –