#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. Спасибо. Это помогло.