我正在嘗試在 React 代碼中使用從 Node 返回的數組。以下是節點的路由器代碼:router.get('/prodlist', async (req, res) => { try { await Product.find({}).exec((err, result) => { res.status(200).send({ express: result }) }) } catch (e) { console.log(e) res.status(400).send(e) }})React 的組件代碼:import React, { useState, useEffect } from 'react';function App() { const [datas, setDatas] = useState(null) useEffect(() => { var curURL = window.location.href var calledRoute = curURL.substr(8).substr(curURL.substr(8).indexOf("/")) callBackendAPI(calledRoute) .then(res => setDatas(prevData => res.express)) .catch(err => console.log(err)); }, []) async function callBackendAPI(routePath) { const response = await fetch(routePath); const body = await response.json(); if (response.status !== 200) { throw Error(body.message) } console.log(body.express) return body; } return ( <div className="App"> {{datas}} </div> )}export default App;以及數組內容(從Chrome的開發人員工具中看到):(3) [{…}, {…}, {…}] 0: prodDesc: "Prod1" prodID: "1" prodImage: "prod1.jpg" prodPrice: 350 prodRebate: 100 prodReviews: [] prodStock: 31 prodThumb: "prod1.jpg" __v: 0 _id: "5eb04a6439eec26af4981541" __proto__: Object 1: {prodID: "2", prodDesc: "Prod2", prodThumb: "prod2.jpg", prodImage: "prod2.jpg", prodPrice: 1500.79, …} 2: {prodID: "3", prodDesc: "Prod3", prodThumb: "prod3.jpg", prodImage: "prod3.jpg", prodPrice: 280.79, …} length: 3 __proto__: Array(0)當我執行此代碼時,我收到錯誤:對象作為 React 子級無效因此,我嘗試用如下行來映射數據的內容:{datas.map((item) => <p>{item}</p>)}使用映射執行此代碼時,我收到錯誤:無法讀取 null 的屬性“map”。雖然數據包含一個數組,但 React 似乎將其視為 null。有人理解這個問題嗎?編輯:我沒有意識到這個問題是關于兩個不同的問題。Norbitrial的答案修復了有關同步性的問題,但我仍然收到錯誤“對象作為React子級無效[...]改用數組”。EDIT2:通過將映射轉發到具有以下行的 REACT 組件解決了該問題:{datas && datas.map(item => <ShopCart key={item.prodID} item={item} />)}
映射從 React 中的 nodejs 接收的數組時出現問題
揚帆大魚
2022-08-04 17:18:57
