2017-04-14 32 views
0

我希望做一個POST到API端點,有一個名爲space_photos領域,它接受對象的數組。SETSTATE新的數據推到狀態數組對象

這是我的回調FUNC每當用戶上傳的照片。

constructor(){ 
this.space_photo_holder = []; 
} 

callback = (e) => { 

    this.space_photos_holder.push(e); 

    this.setState({space_photos: this.space_photos_holder}) 

} 

我認爲代碼是合法的,但有沒有更好的方法來做到這一點?

回答

0

您可以簡單地使用concat而不是推送。它返回一個更新的陣列

constructor(){ 
    this.state = { 
     space_photos= [] 
    } 
} 

callback = (e) => { 

    this.setState({space_photos: this.state.space_photos.concat(e)}) 

} 
+0

只是試過這個,這不會工作,數組將永遠是一個。我想推陣列而不是替換它們。 –

+0

你是對的,因爲你沒有改變space_photos_holder數組,所以不會工作。使用更新的方法 –

+0

更新的方法?剛纔有什麼問題? –

1

您可以簡單地使用傳播運營商。我們建議設置初始狀態constructor和使用的setState功能版本時,新狀態是基於以前的狀態。

constructor(){ 
    this.state = { space_photos: [] }; 
} 

callback = (e) => { 
    this.setState((state) => { space_photos : [...state.space_photos, ...e]}) 
} 

此外,您可以使用cancat方法。

callback = (e) => { 
    this.setState((state) => { space_photos : state.space_photos.cancat([e]) }); 
} 
+0

CONCAT更乾淨。 –