我在React.js中还很陌生,在通过另一个类的静态函数调用分配状态时遇到麻烦。这段代码:
componentDidMount() {
this.setState(() => ({ movies: MovieService.getMovies() }));
}
不设置我的状态。我相信问题出在异步函数的使用上,因为如果我使用console.log(MovieService.getMovies())
,它将显示Promise {<pending>}
。但是,我仍然对如何解决此问题感到困惑,谢谢您的帮助!
答案 0 :(得分:4)
componentDidMount() {
MovieService.getMovies().then(moviesList => {
this.setState({ movies: moviesList }));
})
}
假设getMovies
返回了电影列表,则需要等待其兑现的诺言,然后将值分配给您的状态
答案 1 :(得分:3)
您的代码会将您所在州的movies
字段设置为Promise对象,该对象表示从对MovieService.getMovies()
的调用中返回的待处理承诺
尝试对代码进行以下调整以解决问题,方法是先解决承诺,然后将结果分配给组件状态:
componentDidMount() {
MovieService.getMovies().then((movies) => {
this.setState({ movies: movies });
})
}