我作出這樣的返回我這樣一個對象一個Ajax請求:如何以組件狀態存儲對象?
Object { user1: "darkblue", user2: "darkred" }
我如何可以存儲在組件的狀態,這個對象,因爲沒有以下作品:
this.state = { usersColors: '' } // use for strings
this.state = { usersColors: [] } // used for arrays
這句法使用了存儲對象?
我作出這樣的返回我這樣一個對象一個Ajax請求:如何以組件狀態存儲對象?
Object { user1: "darkblue", user2: "darkred" }
我如何可以存儲在組件的狀態,這個對象,因爲沒有以下作品:
this.state = { usersColors: '' } // use for strings
this.state = { usersColors: [] } // used for arrays
這句法使用了存儲對象?
初始化任何變量爲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]);
除非在類構造函數中,否則絕不應該使用this.state = ...
。請使用this.setState({usersColors: {myObj: foo, etc: bar}})
一個警告:在render()
方法中不要使用this.setState
,您只會收到錯誤消息。
謝謝你。如果「user1」存儲在變量「用戶名」中,最後一件事是請。我如何檢索user1的顏色? – Mit
@Mit沒有得到你,*「USER1被存儲在一個變量名」 *是指內部狀態變量userColors包含另一個變量'username'裏面,你是存儲'user1'值,那麼在這種情況下:'這一點。 state.userColors.username.user1',如果直接存儲裏面'username'的'user1'值,則:'this.state.username.user1' –
沒有沒有'usersColors.username.user1'可能在這裏,只是' usersColors.user1'來訪問「darkblue」。但是如果我的字符串「user1」存儲在變量「username」中。我如何通過變量用戶名訪問darkblue?在這種情況下使用 – Mit