[英]useState and initial value as array does not work
我正在嘗試在我的項目中使用反應鈎子,當我使用數組作為值時,我遇到了 useState 問題。
正如您在下面的代碼中看到的那樣,當我顯示zoneItems
時,它應該類似於items
數組,但我始終得到一個空數組。 你能解釋一下為什么嗎?
當我使用 object 而不是數組時,它可以工作
const ShippingCostZone = ({ zone, datas, selectedProducts, getProductById }) => {
const items = datas.items.filter(item => item.zoneId === zone.id)
console.log('========> items', items) // ---- SHOW the good values
const [zoneItems, updateItems] = useState(items)
console.log('========> zoneItems ', zoneItems) // ---- SHOW all the time []
.........
提前致謝
再見,由於鈎子的異步性質,您可以在閱讀zoneItems
的內容后執行分配useState(items)
。 但是 React 提供了一個鈎子,每次加載組件時都會觸發該鈎子,或者如您所願,每次zoneItems
更改其值時:我說的是useEffect
鈎子。
所以如果你想在每次更新時打印zoneItems
的內容,只需要這樣寫:
useEffect(() => {
console.log(zoneItems);
}, [zoneItems])
這是 React 提供的管理 state 異步賦值的方式。
我試圖在我的項目中使用反應鈎子,當我使用數組作為值時我遇到了 useState 問題。
正如您在下面的代碼中看到的那樣,當我顯示zoneItems
它應該像items
數組時,我總是得到一個空數組。 你能解釋一下為什么嗎?
當我使用 object 而不是數組時,它可以工作
const ShippingCostZone = ({ zone, datas, selectedProducts, getProductById }) => {
const items = datas.items.filter(item => item.zoneId === zone.id)
console.log('========> items', items) // ---- SHOW the good values
const [zoneItems, updateItems] = useState(items)
console.log('========> zoneItems ', zoneItems) // ---- SHOW all the time []
.........
提前致謝
我認為你應該首先將 state 初始化為一個數組然后更新它,如下所示:
const ShippingCostZone = ({ zone, datas, selectedProducts, getProductById }) => {
const items = datas.items.filter(item => item.zoneId === zone.id)
console.log('========> items', items)
const [zoneItems, updateItems] = useState([])
updateitems(items)
console.log('========> zoneItems ', zoneItems)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.