-1

从graphql api查询数据,将其存储在一个数组中,现在必须使用setTimeout或interval显示它(想象一个在特定时间后自动更改的数据轮播)我如何实现它?

4

2 回答 2

2

重要的是要确保在卸载组件时清除间隔。否则,您最终会收到一组令人讨厌的错误消息,其中提到您如何在“未安装”组件上设置状态。

import React, { Component } from 'react'

class Carousel extends Component {
    constructor(props) {
        super(props);
        this.state = {
            intervalId = 0,
            updatedProps: {}
        }
    }
    componentDidMount() {
        let self = this;
        let id = setInterval(function() {
            // GRAPHQL => data
            this.setState({updatedProps: data, intervalId: id})
        })
    }
    componentWillUnMount() {
        clearInterval(this.state.intervalId)
    }
    render() {
        return (
            <div>
                <Carousel 
                    props={this.state.updatedProps}
                />
            </div>
        )
    }
}
于 2017-10-24T05:23:58.060 回答
0

这里是:

this.setState是你问题的关键

setInterval(() => {
    call.to.api(data => {
        this.setState({graphql_data});
        // this will update your ui, as soon as state is set
    })
},miliseconds)
于 2017-10-24T05:20:47.700 回答