【发布时间】:2020-08-02 19:44:49
【问题描述】:
我想等待 10 秒,让我的 API 调用从后端获取类别列表数组并以挂钩状态存储。如果 10 秒内没有获取任何内容,我想将错误挂钩状态设置为 true。
但问题是即使在最初获取数组后,错误状态设置为 true 并且处于状态的 categoriesList 数组在 10 秒后空白。
import React, { useState, useEffect } from "react";
import { doGetAllCategories } from "../helper/adminapicall.js";
const ViewCategories = () => {
let [values, setValues] = useState({
categoriesList: "",
error: false,
});
let { categoriesList, error } = values;
const preloadCategories = () => {
doGetAllCategories()
.then((data) => {
if (data.error) {
return console.log("from preload call data - ", data.error);
}
setValues({ ...values, categoriesList: data.categories });
})
.catch((err) => {
console.log("from preload - ", err);
});
};
useEffect(() => {
preloadCategories();
let timerFunc = setTimeout(() => {
if (!categoriesList && !error) {
setValues({
...values,
error: "Error fetching category list... try after some time !",
});
}
}, 10000);
return () => {
clearTimeout(timerFunc);
};
}, []);
//...further code
【问题讨论】:
标签: javascript reactjs react-hooks settimeout use-effect