Javascript 使用数组默认值反应useState()

Javascript 使用数组默认值反应useState(),javascript,reactjs,Javascript,Reactjs,我试图使用React-useState来存储对象数组,但我遇到了一个奇怪的问题。国家不会接受我给它的价值。我尝试了以下所有方法: const [items,setItems] = useState(props.items) const [items,setItems] = useState([...props.items]) const clone = [...props.items] const [items,setItems] = useState(clone) 但是每个解决方案后面的

我试图使用React-useState来存储对象数组,但我遇到了一个奇怪的问题。国家不会接受我给它的价值。我尝试了以下所有方法:

const [items,setItems] = useState(props.items)

const [items,setItems] = useState([...props.items])

const clone = [...props.items]
const [items,setItems] = useState(clone)
但是每个解决方案后面的项的值是一个空数组。即使
props.items
不是空数组

例如,当我这样做时,它就起作用了

const demo = [{hello:'world'}]
const [items,setItems]=useState(demo)
有人知道这个问题吗

编辑:

具体例子:

这是调用(父)react功能元素的相关部分

const overviews = props.overviews.map((obj, index) => ({ ...obj, onClick: myOnClick}));
return <DragSort items={overviews}/>
给予


尝试确保在组件第一次渲染时检查结果。可能发生的情况是,您正在查看第二次或第n次渲染的结果,此时,状态已设置为不正确的值(在本例中为空数组)。

能否提供演示?另外,通过“商店”,你是指redux吗?我怀疑你的
道具在其他地方发生了变异。你在代码中的其他地方修改了吗?@MattOestreich我的意思是一般意义上的“商店”。我没有使用redux。@AlexW我不认为我在修改它们。但如果我克隆它,它应该仍然有效。
props.items
items
console.log
useState(…)
之后显示
props.items
是一个大小为1的数组,对于我的测试,
items
是一个空数组。@Dan讲得通,只是想澄清一下。我同意Alex W的观点-听起来像是道具。当你试图使用道具时,道具是不存在的。如何将
传递到组件中?
项是否来自某个API?
const Dragsort = (props) => {
    const [ items, setItems ] = useState(props.items);
    console.log('dragsort 1:', props.items);
    console.log('dragsort 2:', items);
    console.log('dragsort 3:', props.items instanceof Array);
    console.log('dragsort 4:', items instanceof Array);
...