亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 React State 的哪里銷毀數組中的對象

從 React State 的哪里銷毀數組中的對象

撒科打諢 2023-05-25 16:30:35
在我遇到這個問題之前我使用了 redux,這個問題沒有發生?,F在我改變了我的方法,我遇到了這個問題。在我的主頁上,我決定獲取我需要的數據并將其存儲在 sessionStorage 中,然后當用戶單擊產品時,它會被重定向到一個模板,我只想在其中填寫值。每當我輸入像 data.title 這樣的對象時,我就會得到未定義(我知道它是因為 useEffect 在渲染周期之后運行)。我應該如何在這里進行?我要么從 sessionStorage 中選擇值,要么獲取它,請參閱我的 useEffect 代碼: useEffect(() => {try {  if (    sessionStorage.length > 0 &&    sessionStorage.getItem(title).length > 0  ) {        const nData = JSON.parse(sessionStorage.getItem(title));    const fData = filterProd(nData, id);    setData(() => fData);  } else {    fetchFiles(`http://localhost:3000/api/prods?id=${id}`, setData);  }} catch (error) {  history.push('/');} }, []);這種方法沒有問題,當我想使用解析的數組/對象并銷毀它時,問題就開始了。因為 useEffect 在第一次運行渲染過程之后運行,所以它會選擇默認狀態,即空 []。解析后我收到了正確的數組,它看起來像這樣:[{ artcategory: "jacket" brand: "The North Face" category: "men" description: "Outdoorjacke" details: "Unterlegter Rei?verschluss, Abdeckleiste, Zwei-Wege-Rei?verschluss, Stickerei" folder: "newFall2020" id: "b77a14f0-fd25-11ea-95f1-ff14921ff326" photos: (3) ["/newFall2020/b7164a10-fd25-11ea-95f1-ff14921ff326-ja1.png", "/newFall2020/b71845e0-fd25-11ea-95f1-ff14921ff326-ja2.png", "/newFall2020/b77a14f0-fd25-11ea-95f1-ff14921ff326-ja3.png"] price: 291.95 rating: 0 size: (5) ["XS", "S", "M", "L", "XL"] subcategory: "clothing" title: "ZANECK JACKET UTILITY" }]在這個對象中,我有一個額外的數組,我在其中存儲圖像的路徑。
查看完整描述

2 回答

?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

如果我理解正確,您的問題是關于嘗試使用尚未定義的對象。如果是這種情況,我的建議是:


function MyComponent() {

    const [data, setData] = useState([]);    


    useEffect(() => {

       if (localStorage) {

         // parse

       }

       else {

         // fetch

       }

       setData(data)

    })


    if (!data.length) return null; // do not render if empty


    return (

        <section ... />

    )

}

這應該可以防止任何孩子使用您的對象,此外,您還可以返回一個微調器或加載指示器,while!data.length為 true。


查看完整回答
反對 回復 2023-05-25
?
MMMHUHU

TA貢獻1834條經驗 獲得超8個贊

首先感謝您的建議。我發現了錯誤,首先它是一個數組,我像輸入對象一樣輸入它,所以數據。但我應該做這個數據[0]。

這實際上解決了它。

不過謝謝!


查看完整回答
反對 回復 2023-05-25
  • 2 回答
  • 0 關注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號