Многослойная фильтрация обновляет 1 событие слишком поздно - PullRequest
0 голосов
/ 27 ноября 2018

Это видео, показывающее ошибку в консоли

Моя проблема в том, что у меня есть функция фильтрации, которая работает, но применяется только после события, которое я хочу применить.фильтрация.Вы можете увидеть, как это поведение выглядит в консоли в клипе.

Вот функция:

  getFilteredSizing() {
    const filterPressureAndFlowRate = row => {
     return (
     row['Pressure'] === this.state.pressure &&

     (parseFloat(row['Flow_min (GPD)']) <= parseFloat(this.state.flowRate) &&

      parseFloat(row['Flow_max (GPD)']) >= parseFloat(this.state.flowRate))
  );
};

    // filters are named by attr stored in react state
    // cols are column names in solar-sizing.js
    const filterBy = (attr, col) => result =>
    this.state[attr] === '' || this.state[attr] === result[col];

    return sizing
      .filter(filterPressureAndFlowRate)
      .filter(filterBy('filterMotor', 'Motor'))
      .filter(filterBy('filterPlunger', 'Plunger'))
      .filter(filterBy('filterHead', 'Head'))
      .filter(filterBy('filterControl', 'Controls'));
}

Переменная размера представляет собой большой объект JSON.В предыдущих итерациях этот объект JSON отлично отфильтровывался, поэтому меня не беспокоит, что проблема в структуре этого объекта.

Один из элементов раскрывающегося списка выглядит следующим образом:

              <th>
                Controls
                <select
                  value={this.props.filterControl}
                  onChange={this.changeHandler.bind(this, 'setFilterControl')}
                >
                  {controlOpts}
                </select>
              </th>

Где changeHandler:

  changeHandler(method, e) {
if (this.props[method]) {
  this.props[method](e.target.value);
}

}

И {controlOpts} - это список опций, и кажется, что он работает просто отлично.

Как мне исправитьэто так, что при обновлении выпадающего меню таблица фильтруется на основе этого события, а не следующего события?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...