выполнить this.setState для таблицы с помощью Reactjs

У меня есть таблица, которая получает мои параметры и показывает их на экране, и она имеет событие 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);
  }
1
задан 28.11.2019, 18:49
1 ответ

Потому что ты это не делаешь 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>
1
ответ дан 01.12.2019, 10:40
  • 1
    я осуществил то, что ты переместил меня, но он производит меня один блуждал, функция применять фильтр работает каждый раз, когда он называет объект, и мне встречает ошибка функции onBuscar. – Víctor Eduardo Duque Rosales 28.11.2019, 20:41
  • 2
    уже мне удалось решить проблему, с твоей помощью, я переместил все его, как ты показал меня, но чтобы мочь, что функционировал в onClick, переместил это его onClick = { () = > this.click (this.aplicarFiltro (dataBus.numero)) } реализуй все, но сейчас он говорит мне, что this.click не функция – Víctor Eduardo Duque Rosales 28.11.2019, 22:15
  • 3
    уже я решил проблему, в бывший alert (), который имел по отношению ко мне грустную жизнь, и я не сумел замечать, вначале, уже код, который ты переместил меня в договорившийся, превосходный но то, что, если не было возможно, он состоял в том, чтобы делать ему this.setState, таким же образом он не был необходим, большое спасибо – Víctor Eduardo Duque Rosales 29.11.2019, 13:49

Теги

Похожие вопросы