как убрать последний элемент в массиве приставки? - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть следующий код:

const initialState = {
  searchItems: ['Item'],
}
export default (state = initialState, action) => {
  switch (action.type) {
    case BACKSPACE_REMOVE_SEARCH_ITEM:
      console.log(state.searchItems);
      return {
        ...state,
        searchItems: [...state.searchItems.splice(-1)],
      };
    default:
      return state;
  }
}

, но когда я пытаюсь выполнить такое действие, я получаю тот же массив, что и раньше, с «Item» внутри, он не «удаляет его».Где проблема?

1 Ответ

0 голосов
/ 21 сентября 2018

.splice возвращает удаленные элементы.На самом деле, вы не должны использовать .splice вообще, так как он мутирует исходный массив.Я знаю, что вы распространяете оригинал, но синтаксис распространения делает мелкие копии.Так что будьте осторожны..slice было бы лучше, он также возвращает удаленные.В этом случае вам нужно использовать комбинацию .slice и .concat, возможно, или вы можете использовать .filter.

return {
    ...state,
    searchItems: state.searchItems.filter( (_,i) => 
        i !== state.searchItems.length-1
    ),
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...