@DeniSidorenko

React/Redux на странице выдает undefined добавленный массив в объект?

Добрый день, есть такой код
export function fetchCategories() {
  return async dispatch => {
    dispatch(fetchCategoriesStart())
    try {
      const response = await axios.get('/api/category/categories')
      const categories = []
      categories.push(response.data.data)
      categories[0].forEach((category) => {
        axios.get('/api/product/findById/'+ category._id)
          .then(response => category.allProducts = response.data.products)

      })
      console.log(categories)
      dispatch(fetchCategoriesSuccess(categories))
    } catch (e) {
      dispatch(fetchCategoriesError(e))
    }
  }
}


При получении категории, делаю запрос по ИД категории и получаю массив продуктов, которые добавляю как массив к объекту Category. Однако когда в компоненте обращаюсь к state, allProducts нету. Не могу понять в чем причина
  • Вопрос задан
  • 46 просмотров
Пригласить эксперта
Ответы на вопрос 1
Эта строка синхронная
const response = await axios.get('/api/category/categories')

Эта - нет
axios.get('/api/product/findById/'+ category._id)
          .then(response => category.allProducts = response.data.products)

И диспатчите вы в то время, пока асинхронный код не выполнился. Документацию по редаксу читали? Вам такое понятие как иммутабильность знакома, и в каком месте она прикладывается к стору?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы