javascript - 如何在 React 组件中每分钟调用一个函数?

标签 javascript reactjs react-redux react-hooks

我做了一个表格来获取股票报价,效果很好,但是当我尝试在组件中放置一个函数 include setState 时,它​​陷入了无限循环,它会触发 setState 并立即重新渲染并再次触发。
加载此组件时,如何在不触发无限循环的情况下调用此函数?
我会每 10 秒或每分钟调用一次该函数。

import React, { useState } from 'react'
import api from '../../api'

function CreateRow(props){
    
    const [stock, setStock] = useState({symbol:'',last:'',change:''})
    

    async function check() {
        const result = await api.getStock(props.item)
        console.log(props.item)
        const symbol = result.data.symbol
        const lastest = result.data.latestPrice
        const change = result.data.change
        setStock({symbol:symbol, lastest:lastest, change:change})
    }


    // check()   <----------! if I call the function here, it becomes an infinite loop.


    return(
        <tr>
            <th scope="row"></th>
            <td>{stock.symbol}</td>
            <td>{stock.lastest}</td>
            <td>{stock.change}</td>
        </tr>
    )
}

export default CreateRow

最佳答案

您想在生命周期方法中启动超时功能。
生命周期方法是调用的方法,例如 mount 和 unmount (还有更多示例,但为了解释起见,我将在这里停止)
您感兴趣的是挂载生命周期。
在功能组件中,可以这样访问:

const { useEffect } from 'react';

useEffect(() => {
  // This will fire only on mount.
}, [])
在那个函数中,你想初始化一个 setTimeout功能。
const MINUTE_MS = 60000;

useEffect(() => {
  const interval = setInterval(() => {
    console.log('Logs every minute');
  }, MINUTE_MS);

  return () => clearInterval(interval); // This represents the unmount function, in which you need to clear your interval to prevent memory leaks.
}, [])

关于javascript - 如何在 React 组件中每分钟调用一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65049812/

相关文章:

node.js - React-Facebook-Login 和 Node.js Express

javascript - 发出 http 请求时,Firefox 插件 "RequirementError: The option "url“无效。”

javascript - 垃圾收集器支持的 "undefined"或 "null"

javascript - Safari 中未触发变声事件

javascript - 卸载 React Parent 而不卸载 Child

reactjs - 如何在 React 组件之外访问 Redux 存储

Javascript 正则表达式替换为不同的值

javascript - "this"在映射函数 Reactjs 中未定义

css - 如何在 Calyspo Wordpress 中使用本地样式表文件

reactjs - 如何通过 anchor 标记传递 Prop ?