Это видео, показывающее ошибку в консоли
Моя проблема в том, что у меня есть функция фильтрации, которая работает, но применяется только после события, которое я хочу применить.фильтрация.Вы можете увидеть, как это поведение выглядит в консоли в клипе.
Вот функция:
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} - это список опций, и кажется, что он работает просто отлично.
Как мне исправитьэто так, что при обновлении выпадающего меню таблица фильтруется на основе этого события, а не следующего события?