gpt4 book ai didi

javascript - 将新数组而不是数组文字传递给 useState 显示空数组

转载 作者:行者123 更新时间:2023-12-03 19:20:38 25 4
gpt4 key购买 nike

这是一个小问题,但很奇怪!

let checkedlistarr = new Array();
for (var i in items){ //items size is 30
checkedlistarr.push(i)
}
const [selected, setSelected] = React.useState(checkedlistarr);
console.log(selected)

它返回 []


checkedlistarr = ["0","1","2","3"];
const [selected, setSelected] = React.useState(checkedlistarr);
console.log(selected)

它返回 ["0","1","2","3"]
为什么会发生这种情况?我也尝试过 concat 函数。但同样的问题。

最佳答案

可能有一点小误会。我相信items必须为空或没有可迭代的属性。
从文档 for-in , 遍历所有可枚举的属性。
例如:如果 items是一个数字/ bool 值(having not Iterable values),for-in循环甚至不会执行。

const items = 30
for(var i in items) {
console.log("this won't run") // Because `Object.getOwnPropertyDescriptors(items)` returns empty `{}`
}

如果 items 具有 Iterable 属性, for..in循环正确执行。方法

const items = new Array(30).fill(1) // fill some values or any object with values { 0: 0, 1: 1, 2: 2... }
for(var i in items) {
console.log("this will run", i) // Because `Object.getOwnPropertyDescriptors(items)` returns empty `{0, {...}, 1: {...},2...}`
}

可以看 here demo用你的代码。

关于javascript - 将新数组而不是数组文字传递给 useState 显示空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59419608/

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