Правильно ли организовал стор в react redux (оч лекго просто я туплю)

import orderBy from 'lodash/orderBy';
import uniqBy from 'lodash/uniqBy';

const initialState = {
   news:[],
   filteredNews:[],
   isLoading:true,
   inputValue:""
};

export default (state = initialState, action) => {
   switch (action.type) {

вот тут я получаю данный с сервера и засовываю их в store.news, но для фильтрации я создал еще один массив, чтобы проходиться по нему и выводить отфильтрованные данные, получается у меня лежит два огромных массива один из которых является просто звеном

      case "SET_POSTS":
         return {    
            ...state,
            news: action.payload,
            filteredNews: action.payload,
            isLoading:false,
          };
       case "SEARCH_BY_INPUT_VALUE":
          return {    
             ...state,
             inputValue: action.payload,

тут перебираю массив

             filteredNews:state.news.filter(
                o => o.title.toLowerCase().indexOf(action.payload.toLowerCase()) >= 0 
             )
          };

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

Автор решения: an_parubets

Ну вообще filteredNews не стоит хранить в store. Используй просто селектор, который будет возвращать отфильтрованный массив. Так же не совсем понятно зачем хранить в сторе inputValue. Пусть это будет на уровне компонента.

import orderBy from 'lodash/orderBy';
import uniqBy from 'lodash/uniqBy';

const initialState = {
   news:[],
   isLoading:true,
};

export default (state = initialState, action) => {
   switch (action.type) {
      case "SET_POSTS":
         return {    
            ...state,
            news: action.payload,
            filteredNews: action.payload,
            isLoading:false,
          };
      default: return state;
   }
}

export const getFilteredNews = (state, inputValue) => {
    return state.news.filter(
       o => o.title.toLowerCase().indexOf(inputValue.toLowerCase()) >= 0 
    )
}
→ Ссылка