在 useEffect React 中调用多个 API 端点
Call Multiple API endpoint in useEffect React
我在为多个 API 端点调用 useEffect 时遇到问题。只加载了一个或另一个。
我的代码:
const [values, setValues] = useState({
total: [],
outstanding: []
});
useEffect(() => {
DataService.dashboard_total_Amount().then((response)=>{ setValues({...values, total: response})})
ChartService.Outstanding().then((response)=>{setValues({...values, outstanding: response})})
}, [])
希望有人能指出我的问题。谢谢
useEffect 中的函数充当 values
变量的闭包。为确保更新最新值,您可以将函数传递给 setValues
:
const [values, setValues] = useState({
total: [],
outstanding: []
});
useEffect(() => {
DataService.dashboard_total_Amount().then((response)=>{ setValues((values) => {...values, total: response})})
ChartService.Outstanding().then((response)=>{setValues((values) => {...values, outstanding: response})})
}, [])
一个更好的方法做同样的事情,你只更新状态一次,因此它也 re-render 组件一次,这看起来更干净,并尝试使用 try-catch
React.useEffect(() => {
const fetchDetails = async () => {
try {
const resDataService = await DataService.dashboard_total_Amount();
const resChartService = await ChartService.Outstanding();
setValues({ outstanding: resChartService, total: resDataService });
} catch (error) {
console.log(erro);
}
};
fetchDetails();
}, []);
我在为多个 API 端点调用 useEffect 时遇到问题。只加载了一个或另一个。
我的代码:
const [values, setValues] = useState({
total: [],
outstanding: []
});
useEffect(() => {
DataService.dashboard_total_Amount().then((response)=>{ setValues({...values, total: response})})
ChartService.Outstanding().then((response)=>{setValues({...values, outstanding: response})})
}, [])
希望有人能指出我的问题。谢谢
useEffect 中的函数充当 values
变量的闭包。为确保更新最新值,您可以将函数传递给 setValues
:
const [values, setValues] = useState({
total: [],
outstanding: []
});
useEffect(() => {
DataService.dashboard_total_Amount().then((response)=>{ setValues((values) => {...values, total: response})})
ChartService.Outstanding().then((response)=>{setValues((values) => {...values, outstanding: response})})
}, [])
一个更好的方法做同样的事情,你只更新状态一次,因此它也 re-render 组件一次,这看起来更干净,并尝试使用 try-catch
React.useEffect(() => {
const fetchDetails = async () => {
try {
const resDataService = await DataService.dashboard_total_Amount();
const resChartService = await ChartService.Outstanding();
setValues({ outstanding: resChartService, total: resDataService });
} catch (error) {
console.log(erro);
}
};
fetchDetails();
}, []);