[我想将我的'ques'数组设置为Product状态的我的'questions'属性,然后将我的Products状态设置为一个数组并将其保存在commitClick之后;但是当我点击提交时,尽管状态发生了变化,但是本地存储在我的产品状态下的setStated的问题数组为空;我不知道为什么会这样,怎么办..
这是我的代码:
else {
setMessage(null)
Products?
products=Products
:
products=[]
ques.push(selected);
console.log(ques)
setProduct({
...Product,
questions:[ques[0]]
})
products.push(Product)
localStorage.setItem('products',JSON.stringify(products))
//
// props.history.push(`/${brandId}/${modelId}/${yearId}/${pieceId}/confirm`)
}
更新状态是异步的,因此一旦调用setItem
,该状态尚未更新。
您需要使用useEffect
来收听产品状态更新,如下所示:
useEffect(() => {
localStorage.setItem('products',JSON.stringify(products))
}, [Product])