У меня есть компонент класса React, вид которого зависит от глобального состояния, которое называется props.filtered_table_data
и хранится в Redux Store.
Я использую useReducer
, чтобы применить фильтры к состоянию
const init_filter = { OWNER: '', TEAM: '' }
const [filter, dispatch] = useReducer((state, action) => {
switch (action.type) {
case 'OWNER':
return { ...state, OWNER: action.option }
case 'TEAM':
return { ...state, TEAM: action.option }
case 'RESET':
return init_filter
default:
return state
}
}, init_filter)
Эти фильтры применяются, когда я выбираю из выпадающего списка.
<Select
className="select-filter"
type="owner"
onItemSelect={(optionItem) => { handleFilter('OWNER', optionItem); ; filterData()}}
>
</Select>
И filterData()
это функция, которая обрабатывает фильтрацию данных. Он создает новый массив, фильтрует данные на основе фильтра и обновляет его в конце, выполнив
props.filterTable(newArray)
filterTable
- просто действие с избыточностью, которое обновляет props.filtered_table_data
.
Фильтрация работает хорошо, но обновление имеет задержку. Когда я выбираю новый фильтр, предыдущий фильтр применяется к данным.
Как я могу исправить эту проблему?