javascript - 用数组设置状态的问题,丢失第一个位置
问题描述
我有一个通过道具接收数组的函数。我需要将这个数组保存在组件的状态中,所以我的组件如下所示:
...
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]
解决方案
useState
不同步的原因有很多。useEffect
如果您想在分配了新值后执行某些操作,请使用该功能。
推荐阅读
- c++ - 为什么我的 COM 对象不断重置它的值?
- mod-security - 是否可以记录 ModSecurity 垃圾邮件阻止规则匹配的模式?
- syntax - 需要帮助绘制“比尔邀请了乔纳森喜欢的艺术家?”这句话的 D 结构。
- python-3.x - 在python中合并单个字典的两个键
- python - How to deal with transfer encoding in Python?
- c# - Obtain Assembly attributes from unloaded executable
- html - Why is my XPath based on text content failing?
- loops - 试图从 Rust 中的循环外部借用变量绑定
- angular - How to inject Angular service for login in Cypress tests
- javascript - 在 vue + django webpack 应用程序中处理页面