首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我要useEffect循环

我要useEffect循环
EN

Stack Overflow用户
提问于 2022-07-27 13:59:45
回答 2查看 53关注 0票数 -1

我知道这个问题是不寻常的,但是我需要发送请求,只要我没有在axios反应中完成状态。我使用useEffect通过动作来调度动作获取状态结束集状态,useEffect依赖是设置状态、调度、道具,但是它仍然只发送4-5个请求和停止。我也尝试了setTimout在500毫秒,但同样的结果。有谁有过同样的问题吗?

代码语言:javascript
运行
复制
    const status = useSelector((state: any) => state.reports.status);
    
    useEffect(() => {
        let timer: any = null;
        if (status !== 'FINISH') {
            timer = setTimeout(() => {
                dispatch(getData(props.id));
            }, 500);
        }
        return () => {
            if (status === 'FINISH') {
                clearTimeout(timer);
            }
        }
    }, [ dispatch, status, props ])
代码语言:javascript
运行
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/18.1.0/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.1.0/umd/react-dom.production.min.js"></script>

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-27 15:52:59

这是为我工作的

代码语言:javascript
运行
复制
const [state, setState] = useState(false);
const status = useSelector((state: any) => state.reports.status);

useEffect(() => {
    let timer: any = null;
    if (status !== 'FINISHED') {
        dispatch(getData(props.id));
        // setting state after 1s or what you need
        timer = setTimeout(() => {
            setState(!state);
        }, 1000);
    }
    return () => {
        if (status === 'FINISHED') {
            clearTimeout(timer);
        }
    }
}, [ status, getDataFetch, state, dispatch ])

票数 2
EN

Stack Overflow用户

发布于 2022-07-27 14:05:08

您必须创建一个状态,它基本上切换该值并将state传递到useEffect依赖项,因此状态值每次调用useEffect时都会更改,直到您没有得到status值finished,因为您可以看到下面的代码,我希望这是可行的。

代码语言:javascript
运行
复制
const status = useSelector((state: any) => state.reports.status);
const [state, setState] = useState(false);
    
useEffect(() => {
  if (status !== 'FINISH') {
     setState(!state);
     dispatch(getData(props.id));
  }
}, [ dispatch, reportStatus, props, state ])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73139337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档