Если вы хотите выполнить сортировку и фильтрацию групп, то ваши локальные состояния должны соответствовать критериям сортировки и фильтрации. Сортированные и отфильтрованные группы должны быть расчетным значением, а не состоянием.
const dispatch = useDispatch();
const groups = useSelector(selectGroups);
const [sort, setSort] = useState('ascending');
const [filter, setFilter] = useState('something');
const sortedGroups = [...groups].sort(
// replace this with whatever your sorting logic is
sort === 'ascending' ? (a, b) => a - b : (a, b) => b - a
).filter(() => /* some filtering code */);
useEffect(() => {
dispatch(loadAsync());
}, []);
По соображениям производительности может потребоваться запомнить сортировку и фильтрацию, чтобы она запускалась только при изменении groups
, sort
или filter
:
const sortedGroups = useMemo(() => {
return [...groups].sort(
// replace this with whatever your sorting logic is
sort === 'ascending' ? (a, b) => a - b : (a, b) => b - a
).filter(() => /* some filtering code */);
}, [groups, sort, filter]);