Получить один элемент из массива редукторов

У меня есть редуктор компании, который я хотел бы содержать в себе множество компаний. Поскольку каждый объект довольно велик, когда пользователь переходит на /company/name, я хочу получить только один объект из моего API и добавить его в этот массив, поэтому, если пользователь посещает одну и ту же страницу компании несколько раз, мне не придется снова вызывать API.

Мой редуктор:

const initialState = {
  companies: []
};

export default (state = initialState, action) => {
  switch (action.type) {
    case GET_COMPANIES:
      return {
        ...state
      };
    case GET_COMPANY:
      return {
        ...state,
        companies: [action.payload, ...state.companies]
      };
    default:
      return state;
  }
};

Есть ли способ обновить состояние в редукторе и просто вернуть 1 компанию? Как показано выше, это вернет все компании в это состояние, хотя логически это не имеет смысла с «GET_COMPANY».

Мои действия:

export const getCompany = name => dispatch => {
  axios.get("/companies/" + name).then(res =>
    dispatch({
      type: GET_COMPANY,
      payload: res.data
    })
  );
};
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
446
1

Ответы 1

Вам нужен некоторый «идентификатор» или «имя» или другое свойство объекта компании, которое вы хотите получить, и чем вы можете использовать метод find для этого:

action.payload.find(company=>company.id===id)

Согласно МДН: Метод find() возвращает значение первого элемента массива, удовлетворяющего заданной функции тестирования. В противном случае возвращается неопределенное значение. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find

Другие вопросы по теме