2017-02-22 55 views
0

Привет, я надеюсь, что это синтаксис ... У меня есть окно поиска, оно передает его значение до редуктора, который я бы хотел использовать для фильтрации некоторых данных и возврата как новое состояние, но только с городами в массиве, которые содержат значение поиска.Redux filter array возвращает новое состояние

case 'FILTER_LOCATIONS' : 
    const data = action.serverData 
     .filter(cityName => { 
     return cityName.city.toLowerCase().indexOf(action.event) >= 0 
     }); 
     console.log(data); 

    return state; 

данные возвращают фильтрованный массив, но как я могу обновить свое состояние?

** обновление

Извиняюсь, немного нуб.

ServerData на корень дерева и выглядит как это:

serverData [{ 
    "id": 1, 
    "full_name": "Eric Myers", 
    "city": "Sydney", 
    "lat": "-33.8678", 
    "lng": "151.2073", 
    "country": "Australia" 
}, { 
    "id": 2, 
    "full_name": "Ruth Torres", 
    "city": "Simpang", 
    "lat": "-7.1406", 
    "lng": "107.0033", 
    "country": "Indonesia" 
}, { 
    "id": 3, 
    "full_name": "Kevin Collins", 
    "city": "Herrljunga", 
    "lat": "58.0774", 
    "lng": "13.0266", 
    "country": "Sweden" 
}] 
+0

Куда решает массив в вашем состоянии? Измените свой вопрос, чтобы включить краткое описание/пример вашего дерева состояний. –

ответ

1

Вы не сказали нам, где в вашем дереве состояний эти данные должны идти, но предположим, что вы хотите установить свойство с именем filteredLocations, вы могли бы сделать что-то вроде этого:

case 'FILTER_LOCATIONS' : 
    const data = action.serverData 
    .filter(cityName => cityName.city.toLowerCase().indexOf(action.event) >= 0); 

    return Object.assign({}, state, { filteredLocations: data }); 

Если вы используете Бабель и имеет object spread (stage-3) и shorthand properties (es2015) включены в ваших пресетах, вы можете м ake это более кратким:

case 'FILTER_LOCATIONS' : 
    const filteredLocations = action.serverData 
    .filter(cityName => cityName.city.toLowerCase().indexOf(action.event) >= 0); 

    return { ...state, filteredLocations }; 
+0

Я думал об этом неправильно. Вместо этого или при попытке вернуть обновленную функцию фильтрации я переместил фильтрацию в компонент, который в ней нуждается. Таким образом, исходные данные остаются в такте. – Paulie

 Смежные вопросы

  • Нет связанных вопросов^_^