У меня есть таблица, которая получает мои параметры и показывает их на экране, и она имеет событие onclick, которое вызывает функцию, которой я должен передать параметр, который находится в таблице, здесь я пытаюсь выполнить this.setState, и используя функцию onChange для выполнения этого действия, и я думаю, что проблема начинается там. но я не уверен.
это мой рендер (), где я пробую эту строку:
<tr id="tablaBuses" onClick={this.aplicarFiltro}
onChange={() => { this.setState({ bus: dataBus.numero}); }}>
это полный рендер:
render() {
const { Filtro } = this.props;
console.info(Filtro.origen + Filtro.destino);
return (
<div id="tablaBus">
<Table striped bordered hover responsive size="sm">
<thead>
<tr>
<th>H. de Salida</th>
<th>H de llegada</th>
<th>patente</th>
<th>Conductor</th>
<th>Origen</th>
<th>Destino</th>
<th>Nº Bus</th>
</tr>
</thead>
{this.state.loading === false &&
<tbody>
{this.state.buses.map((dataBus) => {
return (
<tr id={dataBus.numero}
onChange={() => { this.setState({ bus: dataBus.numero}); console.log('INGRESO A LA FUNCION') }}>
<td>{this.formateaFecha(dataBus.fecha_salida)}</td>
<td>{this.formateaFecha(dataBus.fecha_destino)}</td>
<td>{dataBus.patente}</td>
<td>{dataBus.conductor_nombre}</td>
<td>{dataBus.origen}</td>
<td>{dataBus.destino}</td>
<td >{dataBus.numero}</td>
</tr>
)
})}
</tbody>
}
</Table>
</div>
);
}
это мой конструктор:
constructor(props) {
super(props);
this.state = {
linea: 0,
loading: true,
buses: {},
origen: '',
destino: '',
status: null,
bus:0,
}
this.aplicarFiltro = this.aplicarFiltro.bind(this)
}
и это функция, которая вызывает состояние:
aplicarFiltro() {
if (parseInt(this.state.bus) <= 0) {
alert("Seleccione un bus antes de buscar");
return;
}
this.props.onBuscar(1 ,3, this.state.bus);
}
Потому что ты это не делаешь asГ - просто:
aplicarFiltro(bus) {
if (bus <= 0) {
alert("Seleccione un bus antes de buscar");
return;
}
this.setState({bus}) //Solo si realmente es necesario manejar como estado el bus que se va a buscar
this.props.onBuscar(1 ,3, bus);
}
<tbody>
{this.state.buses.map((dataBus) => {
return (
<tr id={dataBus.numero}
onClick={() => {
this.aplicarFiltro(dataBus.numero)
}>
<td>{this.formateaFecha(dataBus.fecha_salida)}</td>
<td>{this.formateaFecha(dataBus.fecha_destino)}</td>
<td>{dataBus.patente}</td>
<td>{dataBus.conductor_nombre}</td>
<td>{dataBus.origen}</td>
<td>{dataBus.destino}</td>
<td >{dataBus.numero}</td>
</tr>
)
})}
</tbody>