Как правильно почистить и переписать массив в Redux - PullRequest
1 голос
/ 06 апреля 2020

При нажатии на кнопку я получаю входное значение и массив.

<button onClick={()=>this.props.test(this.props.value,this.props.pokemonList)}>Push</button>

В действии я сопоставляю его и выравниваю значение «Типы» в массиве с входным значением и, если они равны, переводит их в состояние

export function filterByTypes(searchValue,pokList){
    return (dispatch) =>{
        dispatch(getValue(searchValue));
        pokList.map((types)=>
        types.types.map((name)=>{
            if (searchValue == name.type.name){
                dispatch(filteredPokes(types));
            }})
        );
    }
}

Редуктор

   case FILTERED_POKES:
      return{
         ...state, filteredPokes: [...state,action.types]
     }

Мне нужно, чтобы каждый раз при клике массив FilterPokes очищался и помещал туда новые элементы. Я попытался сделать так ... состояние, FilterPokes: [action.types], но в этом случае в массиве положить только один элемент. Как я могу это исправить или сделать правильную проверку? Спасибо!

Ответы [ 2 ]

1 голос
/ 08 апреля 2020

Редуктор

  case FILTERED_POKES:
    return {
         ...state, 
         filteredPokes: [...state.filretedPokes, ...action.types]
    }

В вашем случае вы копируете все state в filteredPokes. Для очистки filteredPokes нажмите кнопку Создать новое действие.

0 голосов
/ 06 апреля 2020

Сначала необходимо отфильтровать массив, а затем перевести массив в состояние

 export function filterByTypes(searchValue,pokList){
        return (dispatch) =>{
            dispatch(getValue(searchValue));
            pokList.forEach((types)=> {
            dispatch(filteredPokes(types.types.filter((name)=> searchValue == name.type.name)));
}
        }
    }
...