2017-06-19 27 views
0

我作出這樣的返回我這樣一個對象一個Ajax請求:如何以組件狀態存儲對象?

Object { user1: "darkblue", user2: "darkred" } 

我如何可以存儲在組件的狀態,這個對象,因爲沒有以下作品:

this.state = { usersColors: '' } // use for strings 
this.state = { usersColors: [] } // used for arrays 

這句法使用了存儲對象?

回答

2

初始化任何變量爲object,就這樣寫:

this.state = { usersColors: {} } 

並使用setState更新狀態,一旦你得到的迴應,就像這樣:

this.setState({usersColors: response}) 

現在您可以訪問響應值由:

this.state.usersColors.user1 ----> "darkblue" 

this.state.usersColors.user2 ----> "darkred" 

更新:

檢查這個片段:

let state = { 
 
    userColors: { 
 
     user1: 'red', 
 
     user2: 'blue' 
 
    } 
 
} 
 

 
let username = 'user1'; 
 

 
console.log('user1 value = ', state.userColors[username]);

+0

謝謝你。如果「user1」存儲在變量「用戶名」中,最後一件事是請。我如何檢索user1的顏色? – Mit

+0

@Mit沒有得到你,*「USER1被存儲在一個變量名」 *是指內部狀態變量userColors包含另一個變量'username'裏面,你是存儲'user1'值,那麼在這種情況下:'這一點。 state.userColors.username.user1',如果直接存儲裏面'username'的'user1'值,則:'this.state.username.user1' –

+0

沒有沒有'usersColors.username.user1'可能在這裏,只是' usersColors.user1'來訪問「darkblue」。但是如果我的字符串「user1」存儲在變量「username」中。我如何通過變量用戶名訪問darkblue?在這種情況下使用 – Mit

1

除非在類構造函數中,否則絕不應該使用this.state = ...。請使用this.setState({usersColors: {myObj: foo, etc: bar}})一個警告:在render()方法中不要使用this.setState,您只會收到錯誤消息。