Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当使用react-TypeError中的hook useState函数更改列表的值时,无法使用react更新列表。map不是函数_Javascript_Reactjs_Use Effect_Use State_Map Function - Fatal编程技术网

Javascript 当使用react-TypeError中的hook useState函数更改列表的值时,无法使用react更新列表。map不是函数

Javascript 当使用react-TypeError中的hook useState函数更改列表的值时,无法使用react更新列表。map不是函数,javascript,reactjs,use-effect,use-state,map-function,Javascript,Reactjs,Use Effect,Use State,Map Function,我想得到一个值列表,每当它的值通过hook-setState函数更改时更新,但是我得到一个错误,我不知道为什么。。。我得到一个.map不是一个函数类型错误 下面是我的代码,我还有一个代码沙盒链接: 从“axios”导入axios; 从“react”导入{useState,useffect}; const fetchInvestment=async()=>{ const res=等待axios.get( "https://6r3yk.sse.codesandbox.io/api/investmen

我想得到一个值列表,每当它的值通过hook-setState函数更改时更新,但是我得到一个错误,我不知道为什么。。。我得到一个.map不是一个函数类型错误

下面是我的代码,我还有一个代码沙盒链接:

从“axios”导入axios;
从“react”导入{useState,useffect};
const fetchInvestment=async()=>{
const res=等待axios.get(
"https://6r3yk.sse.codesandbox.io/api/investments/60b2696de8be014bac79a2a1"
);
收益率、数据、投资、收益;
};
导出默认函数(){
const[incomes,setincomers]=useState([]);
const[date,setDate]=使用状态(未定义);
const[value,setValue]=使用状态(未定义);
useffect(()=>{
const getInvestments=async()=>{
const res=等待获取投资();
收入(res);
};
如果(长度===0){
getInvestments();
}
控制台.日志(收入);
},[收入];
返回(
你好,代码沙盒
{
设置日期(如目标值);
}}
/>
setValue(e.target.value)}
/>
{
const income={};
收入[日期]=数量(价值);
设置收入(收入.推送(收入));
设置超时(()=>{
控制台.日志(收入);
}, 2000);
}}
>
拯救
    {收入.地图((收入)=>(
  • {Object.keys(income)}:{Object.values(income)}
  • ))}
); }
替换此行:

setIncomes(incomes.push(income));
用这个

setIncomes([…incomes,income]);
.push
方法返回数组的长度,而不是实际数组的长度。您可以使用spread操作符展开当前数组,然后将新项添加到该数组的末尾

这样做也应该有效:

收入推送(收入) 设定收入(收入) 替换此行:

setIncomes(incomes.push(income));
用这个

setIncomes([…incomes,income]);
.push
方法返回数组的长度,而不是实际数组的长度。您可以使用spread操作符展开当前数组,然后将新项添加到该数组的末尾

这样做也应该有效:

收入推送(收入) 设定收入(收入)
您可能会收到该错误,因为从API返回的数据不是数组。从您的代码判断,我猜您需要一个键/值映射,它在JS中是一个对象。您可能可以使用
Object.keys(incomeries).map(…)
,但是在不知道具体的响应格式的情况下,我不能确定

您的代码还有两个其他问题:

首先,您不能将推到上,因为它是一个反应状态数组。相反,您需要使用
setIncomers
回调

setIncomes([...incomes, income])

此外,您使用
Object.keys
Object.values
的方式不正确。同样,如果不知道响应格式的具体信息,就无法说出正确的方法。

可能是因为从API返回的数据不是数组,所以会出现错误。从您的代码判断,我猜您需要一个键/值映射,它在JS中是一个对象。您可能可以使用
Object.keys(incomeries).map(…)
,但是在不知道具体的响应格式的情况下,我不能确定

您的代码还有两个其他问题:

首先,您不能将推到上,因为它是一个反应状态数组。相反,您需要使用
setIncomers
回调

setIncomes([...incomes, income])

此外,您使用
Object.keys
Object.values
的方式不正确。同样,如果不知道您的响应格式的具体信息,就无法说出正确的方式。

非常感谢,您保存了我的日期非常感谢,您保存了我的日期承诺是挂起的,或者数据是对象而不是数组。承诺是挂起的,或者数据是对象而不是数组。