const [lnames, setlNames] = React.useState();
const [lnums, setlNums] = React.useState();
React.useEffect(() => {
axios.get("http://localhost:7001/lunch").then(response => {
let arr1 = [];
let arr2 = [];
response.data.forEach(c => {
arr1.push(c.table_id);
arr2.push(c.table_num_count);
});
setlNames(arr1);
setlNums(arr2);
});
}, []);
const [dnums, setdNums] = React.useState();
React.useEffect(() => {
axios.get("http://localhost:7001/dinner").then(response => {
let arr1 = [];
response.data.forEach(c => {
arr1.push(c.table_num_count);
});
setdNums(arr1);
});
}, []);
const [bnums, setbNums] = React.useState();
React.useEffect(() => {
axios.get("http://localhost:7001/breakfast").then(response => {
let arr1 = [];
response.data.forEach(c => {
arr1.push(c.table_num_count);
});
setbNums(arr1);
});
}, []);
const customer_count_breakfast = bnums;
const customer_count_lunch = lnums;
const customer_count_dinner = dnums;
let sumArray = []
if (lnums & lnums.length > 0) {
//sumArray = lnums.map((l, i) => l + bnums[i] + dnums[i]);
for (let i = 0; i < lnums.length; i++) {
sumArray[i] = bnums[i] + lnums[i] + dnums[i];
}
}
// IF COMMENT ABOVE AND UNCOMMENT HERE THE ERROR IS GONE BUT sumArray is not computed
// if (lnums && lnums[0]) {
// //sumArray = lnums.map((l, i) => l + bnums[i] + dnums[i]);
// for (let i = 0; i < lnums.length; i++) {
// sumArray[i] = bnums[i] + lnums[i] + dnums[i];
// }
// }
下面是一个例子,在上面的代码中,我们可以看到下面的代码:未捕获的类型错误:无法读取未定义的属性(阅读'0')。我想我知道为什么会显示错误。它表示我正在尝试访问未定义的变量的属性或索引,这很可能是由于useEffect,当我调用if条件时,值还没有设置,所以它是未定义的,因此没有长度。当我尝试注解第一个if条件并取消注解第二个if条件时,我没有得到更多的错误,但是求和不起作用,它返回一个空数组。
在这种情况下,如何对.useState()变量的值求和?
2条答案
按热度按时间bjp0bcyl1#
我通过添加try-catch语句解决了这个问题,但不确定它是否可行
s5a0g9ez2#
您需要查看React生命周期和useMemo。
阅读生命周期:https://www.w3schools.com/react/react_lifecycle.asp
阅读useMemo:https://www.w3schools.com/react/react_usememo.asp
下面是一个简单的例子,useEffect将数字放入一个数组,useMemo依赖于这些数组,并将所有数字相加。
实际上,在代码中,您在useEffect完成设置数组值之前调用数组。