一直在使用 React,如何设置超时或创建一个类似于每隔几分钟显示来自 graphql api 的新数据的数据轮播?

Posted

技术标签:

【中文标题】一直在使用 React,如何设置超时或创建一个类似于每隔几分钟显示来自 graphql api 的新数据的数据轮播?【英文标题】:Have been using React, how to setTimeout or create a Data Carousel like thing which shows new data from a graphql api every couple of mins? 【发布时间】:2018-04-04 18:57:09 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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>
        )
    

【讨论】:

【参考方案2】:

这里是:

this.setState是你问题的关键

setInterval(() => 
    call.to.api(data => 
        this.setState(graphql_data);
        // this will update your ui, as soon as state is set
    )
,miliseconds)

【讨论】:

以上是关于一直在使用 React,如何设置超时或创建一个类似于每隔几分钟显示来自 graphql api 的新数据的数据轮播?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用fetch(GET Call)设置超时react-native api调用?

如何使用 typescript 同步 eslint 或设置类似的 tslint 和 prettier?

使用 ReactDOM createPortal 为 react-transition-group 设置动画

如何实现套接字超时?

如何从应用程序级别设置 postgres 查询执行超时?

颤振:库比蒂诺 ListTile ? (或如何创建类似 iOS 的设置菜单)