我正在使用 React axios 從服務器接收 JSON(物件陣列)(服務器端是用 Go 撰寫的,我通過 Postman 檢查,JSON 發送正確)。
這是我在客戶端獲取資料的方式:
export const getPostData = async () => {
const URL = 'http://localhost:8083/test'
try {
const { data: { data }} = await axios.get(URL);
console.log(data)
return data;
} catch (error) {
console.log(error)
}
};
這就是在 App.js 中呼叫 getPostData 的方式:
const App = () => {
const [ posts, setPosts ] = useState([]);
useEffect(() => {
getPostData()
.then((data) => {
setPosts(data)
console.log(data)
})
},[]);
問題是我在瀏覽器控制臺中未定義。我在這里發現了許多類似的問題,但我找不到解決方案(發送 JSON 時設定了 Access-Control-Allow-Origin 標頭)。
我應該了解更多資訊,問題可能出在哪里?如果有任何幫助,我將不勝感激!
如果這可能有幫助,這是我在 Go 中發送 JSON 的方式:
c.Header("Access-Control-Allow-Origin", "*")
c.Header("Content-Type", "application/json")
c.JSON(http.StatusOK, gin.H{
"message": "Hello",
})
uj5u.com熱心網友回復:
這看起來很可疑:
const { data: { data }} = await axios.get(URL);
這試圖讀取從 axios 回應data的屬性上的物件呼叫的屬性,就像這樣沒有解構:data
const data = (await axios.get(URL)).data.data;
你的 Go 代碼看起來并沒有{"data": ___}在它發送的內容周圍放置一個包裝器,而且 Axios 只在回應中給你的內容添加了一層包裝器,而不是兩層。{data: ___}
如果您想要 JSON 回應中的物件,請洗掉內部解構:
const { data } = await axios.get(URL);
data將{message: "Hello"}假設 Go 代碼發送 JSON {"message": "Hello"}。
另外,您的 JavaScript 代碼似乎需要一系列帖子,但您的 Go 代碼只是發送{"message": "Hello"}.
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/443015.html
上一篇:Golang介面和常用欄位
