Есть начальное состояние:
const initialState = {
  products: [
    { id: 5 },
    { id: 7 }
  ]
}
И при возникновении экшина удаления продукта с id:7 из корзины, необходимо удалить свойство из состояния.
Ниже пример решения, но насколько оно иммутабельно?
function (state = initialState, action) {
  case REMOVE_PRODUCT_CART:
    return {
      ...state,
      products: state.products.filter(item => item.id !== action.payload)
    } 
}
А так же просветите меня, в редьюсерах по соглашению (архитектуре flux) может быть только одна чистая функция, которая возвращается по умолчанию, или можно плодить там (естественно самое необходимое) функции, к примеру для переиспользование добавить функцию, которая приведена в 
документации reduxfunction removeItem(array, action) {
    return array.filter( (item, index) => index !== action.index);
}