我有一個呈現訂單列表的ReactJS組件。 我從REST API獲得訂單。數據格式如下:更新ReactJS狀態數組
{
"count": 2,
"orders": [
{
"order_number": 55981,
"customer_number": 24742
},
{
"order_number": 55980,
"customer_number": 24055
}
]
}
每個訂單都可以有一個項目列表。當我點擊一個數量級上,我得到的項目按以下格式的列表:
{
"count": 2,
"items": [
{
"name": "Green pillow",
"status": "pending"
},
{
"name": "Red pillow",
"status": "delivered"
}
]
}
的訂單列表自動刷新,並且可以隨時改變,所以我存儲在this.state
訂單列表,它被通過AJAX更新。 this.state
看起來是這樣的:
{
"orders": [
{
"order_number": 55981,
"customer_number": 24742
},
{
"order_number": 55980,
"customer_number": 24055
}
]
}
我的問題是,我想的是,當我點擊的順序,狀態就會更新,點擊的訂單中包含關聯到該訂單的項目。點擊一個項目後,訂單清單看起來像這樣:
{
"count": 2,
"orders": [
{
"order_number": 55981,
"customer_number": 24742,
"items": [
{
"name": "Green pillow",
"status": "pending"
}
]
},
{
"order_number": 55980,
"customer_number": 24055
}
]
}
如何使用this.setState()添加項目到特定的順序?問題是setState似乎使用鍵更新數據,但我的命令是在一個數組中。我可以複製整個數組,並把項目的關鍵,但似乎矯枉過正。 我採取了錯誤的做法嗎?
這個答案更接近OP的要求,但你需要克隆'this.state.orders'而不是直接指針。你在變異後用相同的對象設置狀態,這會產生副作用。 –