Фильтрация стейта через Redux

Имею такой редюсер

import {
  GET_POSTS,
  GET_POSTS_ERROR,
  GET_POSTS_SUCCESS,
  FILTER_BY_VALUE, 
} from "../contstants";

import { initialStateType } from "../../types/types";

const initialState = {
  posts: [],
  loadingPosts: false,
  error: false,
} as initialStateType;

const PostsReducer = (
  state = initialState,
  { type, payload }: PayloadAction<any>
) => {
  switch (type) {
    case GET_POSTS:
      state = { ...state, loadingPosts: true };
      break;
    case GET_POSTS_SUCCESS:
      state = { ...state, posts: payload, loadingPosts: false };
      break;
    case GET_POSTS_ERROR:
      state = {
        ...state,
        error: true,
        loadingPosts: false,
      };
      break;


    case FILTER_BY_VALUE:
      state = {
        ...state,
        posts: [...state.posts].filter((v) => {
          return v.title.toLowerCase().includes(payload);
        }),
      };
      break;

    default:
      state = { ...state };
      break;
  }

  return state;
};

export default PostsReducer;

как при пусто инпуте возвращать старый стейт?

З.Ы. Направьте меня в нужное русло: Я не должен получать все данные с АПИшки, только порционно, через пагинацию. Верно? В таком случае если реализовать фильтрацию, мне нужен полные данные с АПИшки? Или я должен через параметры сделать запрос на сервер, сервер мне выдаст нужные мне данные?


Ответы (0 шт):