如何在typescript类中从promise获取数据



所以我正在制作一个应用程序,用于使用Movie API搜索电影。我参考了其他人的代码,他们有一个单独的类,包含所有的api方法,我现在使用一个方法,这个类看起来像这样:

export default class TMDb {
private readonly API_BASE = 'https://api.themoviedb.org/3/';
private readonly TMDB_API_KEY = '{api_key}';
private readonly API_LANGUAGE = 'en-US';
public readonly API_IMAGE_PATH = 'https://image.tmdb.org/t/p/';

private fetchJSON = async (url: string) => {
const response = await axios.get(url);
return response.data;
};
public getPopularMovies = async (page = 1): Promise<ISearch<IMovie>> => {
return this.fetchJSON(
`${this.API_BASE}movie/popular?api_key=${this.TMDB_API_KEY}&language=${this.API_LANGUAGE}&page=${page}`
);
};
}

我正试图在这样的应用程序组件中获取数据:

const API = new TMDb();
useEffect(() =>{
const movies = API.getPopularMovies();
console.log(movies);
}, [])

但在控制台上,我只看到了一个承诺。所以我的问题是,我如何从useEffect挂钩中的promise中获取数据?所以我可以进一步使用这些数据

您可以这样做:

const API = new TMDb();
useEffect(() => {
const fetchPopularMovies = async () => { 
const data = await API.getPopularMovies();
// your state
setPopularMovies(data)
}
fetchPopularMovies().catch(e => {})
}, [])

但您不需要为TMDb使用类,只需将函数放入文件中,然后导出即可。这意味着您也许不需要使用OOP范式。

最新更新