在componentDidMount()中调用函数的问题

时间:2018-11-18 08:04:30

标签: javascript reactjs

我在React.js中还很陌生,在通过另一个类的静态函数调用分配状态时遇到麻烦。这段代码:

componentDidMount() {
    this.setState(() => ({ movies: MovieService.getMovies() }));
}

不设置我的状态。我相信问题出在异步函数的使用上,因为如果我使用console.log(MovieService.getMovies()),它将显示Promise {<pending>}。但是,我仍然对如何解决此问题感到困惑,谢谢您的帮助!

2 个答案:

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