Pada asasnya, saya mempunyai permintaan API dalam useEffect() supaya ia memuatkan semua "buku nota" sebelum halaman dimuatkan supaya saya boleh memaparkannya.
useEffect(() => { getIdToken().then((idToken) => { const data = getAllNotebooks(idToken); const jsonData = JSON.stringify(data, null, 2); notebooks = JSON.parse(jsonData) as [Notebook, Withdraw[]][]; }); }
Bagaimana saya boleh menggunakan senarai buku nota ini dalam kod saya supaya saya boleh menggunakannya dalam teg?
Saya seorang pemula dalam React, jadi saya tidak melakukan banyak perkara selain daripada memanggil fungsi dalam useEffect().
Kemas kini: Seperti yang diminta, berikut ialah fungsi teras getAllNotebooks, kes penggunaannya dan fungsi yang dipanggil secara dalaman oleh useEffect():
tarik_repositori_http
async getAllNotebooks(idToken: string): Promise<[Notebook, Withdraw[]][]> { var notebooks: [Notebook, Withdraw[]][] = [[new Notebook({numSerie : '34000', isActive: false}), [new Withdraw({numSerie : '34000', email: 'erro@maua.br', withdrawTime: Date.now(), finishTime: null})]]]; try { const url = process.env.NEXT_PUBLIC_API_URL + '/get-all-notebooks'; const { data, status} = await axios.get<[Notebook, Withdraw[]][]>(url, {headers : {'Authorization' : `Bearer ${idToken}'`}}); console.log('response status is', status); if (status === 200) { // console.log('response data is', data); const jsondata = JSON.stringify(data, null, 2); notebooks = JSON.parse(jsondata).notebooks as [Notebook, Withdraw[]][]; console.log('notebooks is', notebooks); return notebooks; } else { console.log('response data is', data); } } catch (error) { if (axios.isAxiosError(error)) { console.log('error response is', error); } else { console.log('unknown error'); console.log(error); } } return notebooks; }
dapatkan_semua_notebook_usecase
import { IWithdrawRepository } from '../domain/repositories/withdraw_repository_interface'; export class GetAllNotebooksUsecase { constructor(private withdrawRepo: IWithdrawRepository) {} async execute(idToken: string) { const withdraws = await this.withdrawRepo.getAllNotebooks(idToken); return withdraws; } }
tarik_pembekal
async function getAllNotebooks(idToken: string){ try { const notebooks = await getAllNotebooksUsecase.execute(idToken); setNotebooks(notebooks); return notebooks; } catch (error: any) { console.log(`ERROR PROVIDER: ${error}`); const setError = error; setError(setError); return []; } }
Semoga ini membantu, jika anda mempunyai sebarang pertanyaan sila jawab.