Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.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 将新数组而不是数组文本传递给useState将显示空数组_Javascript_Reactjs - Fatal编程技术网

Javascript 将新数组而不是数组文本传递给useState将显示空数组

Javascript 将新数组而不是数组文本传递给useState将显示空数组,javascript,reactjs,Javascript,Reactjs,这是个小问题,但很奇怪 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) 它返回[] 但是 它返回[“0”、“1”、“2”、“3”] 为什么会发生这种情况?我也尝试

这是个小问题,但很奇怪

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)
它返回
[]

但是

它返回
[“0”、“1”、“2”、“3”]


为什么会发生这种情况?我也尝试了concat函数。但同样的问题。

我确信代码没有问题。 它返回空数组的原因是由于处理时间

console.log(selected);

这一行将在循环操作之前处理。

可能会有一点误解。我认为
必须为空或没有可编辑属性

从文档开始,迭代所有可枚举属性

Ex:如果
是一个数字/布尔值(
具有不可编辑的值
),
for in
循环甚至不会执行

const items=30
对于(项目中的var i){
console.log(“这不会运行”)//因为`Object.getOwnPropertyDescriptors(items)`返回空的`{}`

}
我认为您的
console.log(选中)
是在for循环之前执行的。为什么不试试
useffect
hook。什么是
items
?如图所示,您的代码工作正常。请包含一个。我尝试了与预期相同的方法。它工作正常。您可以包含一个可复制的示例吗?我正在获取数组项的控制台,您可以通过控制台检查控制台中的i值。log(i)。因为所有看起来不错的.for-loop都是同步的-基于发布的代码OP,为什么您认为首先执行
console.log
console.log(selected);