У меня есть компонент 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, похоже, обновляет данные с помощью ключей, но мои заказы находятся в массиве. Возможно, я могу скопировать весь массив и поместить ключ элементов внутри, но это кажется излишним. Я принимаю неправильный подход?
Этот ответ более близок к тому, что задал ОП, но вам нужно клонировать 'this.state.orders' вместо прямого указателя. вы устанавливаете состояние с тем же объектом после его мутации, и это будет иметь побочные эффекты. –