【问题标题】:I want useEffect loop我想要 useEffect 循环
【发布时间】:2022-07-27 22:05:08
【问题描述】:

我知道这个问题很不寻常,但只要我没有在 axios react 中完成状态,我就需要发送请求。我正在使用 useEffect 调度动作通过动作获取状态结束设置状态,useEffect 依赖项设置为 [status, dispatch, props] 但它仍然只发送 4-5 个请求并停止。我也尝试 setTimout 500 毫秒,但结果相同。有人遇到过同样的问题吗?

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

【问题讨论】:

    标签: reactjs axios


    【解决方案1】:
    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 ])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 2021-10-15
      • 2016-06-19
      • 1970-01-01
      • 2018-07-08
      • 2020-02-22
      • 2021-05-07
      相关资源
      最近更新 更多