2 回答
TA贡献1847条经验 获得超7个赞
我假设是useState Hook,它的价值是registSleepsetNewRegist
const [registSleep, setNewRegist] = useState([ ... ])
它不起作用的两个原因。useState Hook 是异步的,对于 setState 内部的逻辑,逻辑不会停止。
setNewRegist( ... update registSleep)
console.log(registSleep) // will run before setState finishes
然而,即使它及时完成,registSleep已经设置为固定值,因此它不会更改,除非重新呈现组件(这是setState所做的),以触发组件重新呈现。
TA贡献1815条经验 获得超6个赞
//I am considering this
const [ registSleep , setNewRegist ] = useState([])
setNewRegist是异步函数,因此在下一个语句将首先执行,因此它不会更新。console.logregistSleep
那么如何检查正确呢?
Tada.... !!!您可以通过以下方式检查其每次更新:registSleepuseEffect
useEffect(() => {
// Here you can get updated length
// as soon as registSleep updates
console.log(registSleep.length);
},[registSleep]) // <-- watch for any update on `registSleep`
添加回答
举报
