撒科打諢
2023-05-25 16:30:35
在我遇到這個問題之前我使用了 redux,這個問題沒有發(fā)生。現(xiàn)在我改變了我的方法,我遇到了這個問題。在我的主頁上,我決定獲取我需要的數(shù)據(jù)并將其存儲在 sessionStorage 中,然后當用戶單擊產(chǎn)品時,它會被重定向到一個模板,我只想在其中填寫值。每當我輸入像 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('/');} }, []);這種方法沒有問題,當我想使用解析的數(shù)組/對象并銷毀它時,問題就開始了。因為 useEffect 在第一次運行渲染過程之后運行,所以它會選擇默認狀態(tài),即空 []。解析后我收到了正確的數(shù)組,它看起來像這樣:[{ 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" }]在這個對象中,我有一個額外的數(shù)組,我在其中存儲圖像的路徑。
2 回答

叮當貓咪
TA貢獻1776條經(jīng)驗 獲得超12個贊
如果我理解正確,您的問題是關(guān)于嘗試使用尚未定義的對象。如果是這種情況,我的建議是:
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 ... />
)
}
這應該可以防止任何孩子使用您的對象,此外,您還可以返回一個微調(diào)器或加載指示器,while!data.length為 true。

MMMHUHU
TA貢獻1834條經(jīng)驗 獲得超8個贊
首先感謝您的建議。我發(fā)現(xiàn)了錯誤,首先它是一個數(shù)組,我像輸入對象一樣輸入它,所以數(shù)據(jù)。但我應該做這個數(shù)據(jù)[0]。
這實際上解決了它。
不過謝謝!
添加回答
舉報
0/150
提交
取消