2016-02-26 48 views
0

我與地圖函數有錯誤。我不知道可能是什麼原因,但它說this.state.rooms.map不是一個函數。我已經從API獲取數據並將其推入空白列表。該列表已成功更新,但無法應用地圖功能。地圖函數中的錯誤reactjs

這裏是我的代碼

我所得到的控制檯上是

室[]

componentDidMount

房對象{設施: 「廚房,有線電視」城市:「城市」,電子郵件:「[email protected]」,列表名稱:「tushant」,所有者名稱:「tushant」...}

未捕獲的類型錯誤:this.state.rooms.map不是函數

+0

您可以加入到'的console.log(Array.isArray(this.state.rooms))'你的問題的結果?因爲看起來'this.state.rooms''''''''''' Array' –

+1

所以'Object {amenities:「Kitchen,...}'是'console.log(this.state.rooms)的結果' ?然後出現這個問題,'this.state.rooms'是一個Object(代表一個房間,我猜),而不是一個Array。如果你只希望從API獲得一個房間,那麼'this.setState({rooms:[數據]});'(替換當前數組)或'this.setState({rooms:this.state.rooms.puch(data)});'(追加房間),或修復您的API返回數組。 – pawel

+0

yes對象是this.state.rooms的結果,我想從API中獲取所有房間,但是我只能獲取一個房間,我做了這個.setState({rooms:[data]})。應該做什麼爲了從api中獲取所有的空間? – Tushant

回答

2

as @sfletche map函數僅用於數組。 改變你success回調

success: (data) => { 
    this.setState({rooms: data.objects}); 
}, 
error: (xhr, status, err) => { 
    console.error(url, status, err.toString()); 
    } 
}); 
+0

這樣我就可以從一個API中只取一個房間,因爲我想從一個API獲取所有房間。 – Tushant

+0

問題是從api(後端)而不是前端你需要確保你發送的房間數組,如果你可以發佈你的API響應 –

+0

是的,現在我得到這樣的http://imgur.com/VZEkPMZ。我現在得到了所有的房間。我忘了更改我的網址。 – Tushant

2

沒有map功能的對象,只陣列。

你的rooms秒輸出顯示了答案

room Object {amenities: "Kitchen, Cable", city: "city", email: 
"[email protected]", listingName: "tushant", ownerName: "tushant"…} 

rooms現在一個對象和map功能是特定於陣列。