Saya memiliki permintaan Api di Saga React. Fungsi permintaan ditempatkan di folder lain. Saya ingin menyebutnya dalam file Saga, tetapi mendapatkan kesalahan, bahwa ProductService tidak ditentukan. Bisakah itu terhubung dengan Saga? Jalannya benar. Fungsinya berfungsi saat berada di halaman Saga tetapi berhenti ketika saya mentransfernya ke folder lain.

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));
}

//folder lain

  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();
          } 
        }
0
Festina 27 Mei 2021, 11:21

1 menjawab

Jawaban Terbaik

Saya pikir itu karena penamaan Anda. Anda memiliki kelas yang diimpor dan turunannya dengan nama yang sama ProductService. Anda dapat mengubah kode Anda seperti di bawah ini

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));
}
0
Shyam 27 Mei 2021, 08:54