setState之后如何对本地存储设置项目?

问题描述 投票:0回答:1

[我想将我的'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`)
            }

这是我提交后的localStorage:local storage after submit

reactjs local-storage setstate
1个回答
0
投票

更新状态是异步的,因此一旦调用setItem,该状态尚未更新。

您需要使用useEffect来收听产品状态更新,如下所示:

useEffect(() => {
 localStorage.setItem('products',JSON.stringify(products))
}, [Product])
© www.soinside.com 2019 - 2024. All rights reserved.