用数组默认值反应useState()

时间:2020-01-17 19:42:42

标签: 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)

,但每个解决方案之后的项值是一个空数组。即使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);
...

给予

enter image description here

1 个答案:

答案 0 :(得分:0)

请尝试确保您是第一次检查组件渲染的结果。可能发生的情况是,您正在查看第二个或第n个渲染的结果,并且此时状态已经设置为错误的值(在这种情况下为空数组)。