{ try { const [data, setData] = useState({ numbers: [], is-6ren">
gpt4 book ai didi

reactjs - React Hook "useEffect"被有条件地调用。 React Hooks 必须在每个组件渲染中以完全相同的顺序调用

转载 作者:行者123 更新时间:2023-12-04 09:14:04 27 4
gpt4 key购买 nike

export const FetchDailyData = () => {
try {

const [data, setData] = useState({ numbers: [], isFetching: false });

useEffect(() => {
const fetchData = async () => {
setData({ ...data, isFetching: true });
const response = await axios.get(`${apiURL}/daily`);
setData({
...data,
numbers: response.data.slice(0, 50),
isFetching: false
});
};
fetchData();
}, [data]);

console.log(`data= ${data.numbers} isFetching= ${data.isFetching}`);

} catch (error) {
if (error) throw error;
console.log(error);
setData({ ...data, isFetching: false });
}
}

谁能帮我解决这个问题?我试图获取 api 数据,但我无法处理这个错误。

最佳答案

您不能将 useEffect 包装在任何可能导致它无法运行的地方,包括 try/catch。看看你在做什么,这可能是一个更好的选择:

export const FetchDailyData = () => {
const [data, setData] = useState({ numbers: [] });
const [fetching, setFetching] = useState(false);
useEffect(() => {
const fetchData = async () => {
const response = await axios.get(`${apiURL}/daily`);
setData({
...data,
numbers: response.data.slice(0, 50),
});
}
try {
setFetching(true);
fetchData();
} catch (error) {
console.error(error);
} finally {
setFetching(false);
}
}, [data]);
}

关于reactjs - React Hook "useEffect"被有条件地调用。 React Hooks 必须在每个组件渲染中以完全相同的顺序调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63294335/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com