我正在尝试使用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)
有人知道这个问题吗?
编辑:
具体示例:
这是调用(父)反应功能元素的相关部分
const overviews = props.overviews.map((obj, index) => ({ ...obj, onClick: myOnClick}));
return <DragSort items={overviews}/>
然后
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);
...
给予
答案 0 :(得分:0)
请尝试确保您是第一次检查组件渲染的结果。可能发生的情况是,您正在查看第二个或第n个渲染的结果,并且此时状态已经设置为错误的值(在这种情况下为空数组)。