首页 > 解决方案 > 用数组设置状态的问题,丢失第一个位置

问题描述

我有一个通过道具接收数组的函数。我需要将这个数组保存在组件的状态中,所以我的组件如下所示:

...
const [mediaIds, setMediaIds] = useState();
...

function mediaChange (mediaArray){
    console.log(mediaArray);
    setMediaIds(mediaArray);
    console.log(mediaIds);
}

在第一个 console.log 中,我打印通过 props 到达的数组,在第二个中,我打印 State 已经改变。

问题是它似乎跳过了数组的第一个位置,下面我将显示我的 console.log。第一个是 mediaArray,第二个是 mediaIds:

[2, 3]
[2]

[2, 3, 7]
[2, 3]

[2, 3, 7, 4]
[2, 3, 7]


[2, 3, 7, 4, 6]
[2, 3, 7, 4]


[2, 3, 7, 4, 6, 5]
[2, 3, 7, 4, 6]

[2, 3, 7, 4, 6, 5, 1]
[2, 3, 7, 4, 6, 5]

[2, 3, 7, 4, 6, 5, 1, 8]
[2, 3, 7, 4, 6, 5, 1]

标签: javascriptreactjs

解决方案


useState不同步的原因有很多。useEffect如果您想在分配了新值后执行某些操作,请使用该功能。

阅读:https ://reactjs.org/docs/hooks-effect.html


推荐阅读