Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用nextjs和hooks设置间隔_Javascript_Reactjs_React Hooks - Fatal编程技术网

Javascript 使用nextjs和hooks设置间隔

Javascript 使用nextjs和hooks设置间隔,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,我正在尝试使用nextjs和hook实现加载。 我必须每3分钟进行一次抓取以检查新信息,当这是附加信息时,我想使用加载。 我创建了一个setLoading,它从false开始,在setIntervar传递到true的过程中开始,但我不知道为什么它不工作。。为什么?谢谢 这是我的密码: import React, { useState, useEffect } from "react"; import Context from "../../config/Context"; import { ch

我正在尝试使用nextjs和hook实现加载。 我必须每3分钟进行一次抓取以检查新信息,当这是附加信息时,我想使用加载。 我创建了一个setLoading,它从false开始,在setIntervar传递到true的过程中开始,但我不知道为什么它不工作。。为什么?谢谢

这是我的密码:

import React, { useState, useEffect } from "react";
import Context from "../../config/Context";
import { checkNewData } from "../../helper/index";

function Home() {

  const [contentLoading, setLoading] = useState(false);
  const data = context.events[0];

  useEffect(() => {
    setInterval(() => {
      if (data.live == false) {
        setLoading(true);
        checkNewData();
      }
      setLoading(false)
    }, 10000);

  return (
    <React.Fragment>
      {contentLoading ? <p>loading</p> : <p>no loading</p>
    </React.Fragment>
  );
}

export default Home;
import React,{useState,useffect}来自“React”;
从“../../config/Context”导入上下文;
从“./../helper/index”导入{checkNewData};
函数Home(){
const[contentLoading,setLoading]=useState(false);
const data=context.events[0];
useffect(()=>{
设置间隔(()=>{
如果(data.live==false){
设置加载(真);
checkNewData();
}
设置加载(错误)
}, 10000);
返回(
{contentLoading?加载

:不加载

); } 导出默认主页;
好的,这里是工作时间间隔

(每3秒调用一次api,并计算它的工作次数(仅供参考)

在负责Api调用的函数中应打开加载程序-然后每隔3秒再次调用数据


const Home=(道具)=>{
const[loading,setLoading]=useState(false);
const[check,setCheck]=useState(0)
常量callApi=()=>{
在这里,您应该调用api+集合加载器
如果获取(设置加载(真))
如果获取(设置加载(错误))
}
useffect(()=>{
常量id=setInterval(()=>{
callApi()
设置检查(检查+1)
}, 3000);
return()=>clearInterval(id);
},[检查])
返回(
{加载?加载

:不加载

} 时间检查执行{check}

); }
好的,这里是工作时间间隔

(每3秒调用一次api,并计算它的工作次数(仅供参考)

在负责Api调用的函数中应打开加载程序-然后每隔3秒再次调用数据


const Home=(道具)=>{
const[loading,setLoading]=useState(false);
const[check,setCheck]=useState(0)
常量callApi=()=>{
在这里,您应该调用api+集合加载器
如果获取(设置加载(真))
如果获取(设置加载(错误))
}
useffect(()=>{
常量id=setInterval(()=>{
callApi()
设置检查(检查+1)
}, 3000);
return()=>clearInterval(id);
},[检查])
返回(
{加载?加载

:不加载

} 时间检查执行{check}

); }
这是根本错误的;您将设置大量的间隔,因为每次组件重新加载时,传递给useEffect的函数都将再次被调用。此外,useEffect不用于修改状态,而是在每次渲染后调用。这是根本错误的;您将设置大量的间隔,因为每次组件重新加载时onent rerenders,传递给useEffect的函数将再次被调用。此外,useEffect不用于修改状态,而是在每次渲染后调用。我尝试了你的示例,从未显示加载文本。表示“未加载”已编辑-加载或未加载取决于状态(如果useData为true,则存在加载)现在-它已经改变了-你应该在callApi函数内部设置加载我想OK,但是我的callApi fn它不在我的家里,在一个外部文件中..它是一个帮助器sou,我可以把它放在这里:
if fetching(setLoading(true))if fetched(setLoading(false))if fetched(setLoading(false))
,谢谢!好的,这个基于模式和体系结构的决策应该基于您的模式和体系结构。您可以通过redux传递状态,也可以向上| | |向下提升状态。您还可以导入/导出模块。另外,如果抓取和如果抓取是伪代码,则说明何时应该调用更改负责加载程序的状态的函数。我尝试了您的示例,但从未尝试过ows加载文本..表示“不加载”已编辑-加载或不加载取决于当前状态(如果useData为true,则存在加载)-它已更改-您应该在callApi函数内设置加载我认为OK,但我的callApi fn它不在我家中,在外部文件中..它是一个帮助程序,我可以在其中放置以下内容:
如果获取(设置加载(true))如果获取(设置加载(false))
,谢谢!好的,这个决策应该基于您的模式和体系结构。您可以通过redux传递状态,也可以向上| | |向下提升状态。您还可以导入/导出模块。另外,如果fetching&如果fetched是伪代码,则说明何时应该调用更改负责加载程序的状态的函数。
const Home = (props) => {

        const [loading, setLoading] = useState(false);
        const [check, setCheck] = useState(0)

        const callApi = () => {
            Here you should call your api + set loader
            if fetching(setLoading(true))
            if fetched(setLoading(false))
        }

        useEffect(() => {
            const id = setInterval(() => {
                callApi()
                setCheck(check + 1)
            }, 3000);
            return () => clearInterval(id);
        }, [check])

        return (
            <React.Fragment>
                {loading ? <p>Loading</p> : <p>No Loading</p>}
                <p>Times check execute {check}</p>
            </React.Fragment>
        );
    }