如何解决将存储在 React State 中的对象转换为数组
我正在尝试使用从服务器接收到的数组(在我的 GET 请求之后作为响应)。我成功接收它并将其存储在 dbdata.purchases 状态变量中。 console.log 将它作为数组打印给我,但它的类型是“对象”。
dbdata.purchases= (2) [1,2]
0:1
1:2
长度:2
原型:数组(0)
因此,我无法访问其 [i] 元素。函数 get_rewards 中的 'content' 变量等于 '12'。
问题:我应该怎么做才能访问 dbdata.purchases 数组的每个元素?
我尝试使用 Array.from() 和 Object.values 将此变量转换为数组,但是这两个 attmpts 都没有成功。 代码如下:
const Offers = () => {
const [dbdata,setdbdata] = useState(0);
useEffect(() => {
let login = window.localStorage.getItem('rr_login');
const apiUrl = 'http://localhost:5000/get_rewards?login=' + login;
fetch(apiUrl)
.then((response) => response.json())
.then((data) => setdbdata(data));
},[])
function get_rewards () {
let content =[];
console.log('dbdata.purchases=',dbdata.purchases);
for (var i=0; i<1;i++) // should be 'for (var i=0; i<lenght(dbdata.purchases);i++)' but it doesn't work since dbdata.purchases is not considered an array
{
content.push(dbdata.purchases); // should be content.push(dbdata.purchases[i]);
}
return content;
}
return (
<div>
<h5 className="mb-3">Your purchases</h5>
<CardDeck>
{get_rewards()}
</CardDeck>
</div>
);
}
解决方法
首先,您需要将状态 dbdata 设置为一个数组:
const [dbdata,setdbdata] = useState([]);
然后当你发出请求并设置了状态后,你可以通过索引访问状态数组中的每个元素:dbdata[0]
获取数组中的第一个元素。
所以你的循环是
for (var i = 0; i < 1; i++) {
content.push(dbdata[i]);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。