компонент класса не определен в Saga-запросе

#reactjs #redux #saga

Вопрос:

У меня есть Api-запрос в Saga React. Функция запроса помещается в другую папку. Я хочу вызвать его в файле Saga, но получаю ошибку, что ProductService не определен. Может ли это быть связано с Сагой? Путь правильный. Функция работала, когда она была на странице Саги, но остановилась, когда я перенес ее в другую папку.

 import ProductService from "../services/productService";

function* fetchProductById(productsInList) {      
  ProductService = new ProductService();
  const myListProducts = productsInList.payload.activity.map((item) =>
   //it's request to another file 
  ProductService.getProductByKey(item)
  );
  const res = yield call(() => Promise.all(myListProducts));
  yield put(productsInMyList(res));
}
 

//другая папка

   export default class ProductService {
        async getProductByKey(key) {    
            const data = new URLSearchParams();
            data.append("key", key);
            const res = await this.getResource(`?${data}`);    
            return await res.json();
          } 
        }
 

Комментарии:

1. в чем заключается сообщение об ошибке ?

2. Ошибка ссылки: сервис продуктов не определен

Ответ №1:

Я думаю, это из-за твоего имени. у вас есть как импортированный класс, так и его экземпляр с одним и тем же именем ProductService . Вы можете изменить свой код, как показано ниже

 import {call, all} from 'redux-saga/effects';
import ProductService from "../services/productService";

function* fetchProductById(productsInList) {
  const productServiceObj = new ProductService();
  const myListProducts = productsInList.payload.activity.map((item) =>
    call(productServiceObj.getProductByKey, item)
  );
  const res = yield all(myListProducts);
  yield put(productsInMyList(res));
}
 

Комментарии:

1. Спасибо. Это помогло.