Вызов setConnections
установит полностью новое значение на connections
, вы обязаны убедиться, что вы сохраняете значения, которые вы не обновляете.
Например, если вы установили такую строку:
setConnections('new value')
Теперь connections
будет иметь new value
вместо объекта. При этом, чтобы сохранить предыдущие значения, вам придется либо использовать Object.assign
, либо оператор распространения ...
.
setConnections({
...connections,
connectionA: { ...connections.connectionA, connected: true }
})
, который будет работать в большинстве случаев, однако есть некоторые крайние случаи, когда значение connections
может часто меняться и, учитывая, что setConnections
работает асинхронно c, вы можете не получать текущие значения и, следовательно, вы можете потерять некоторые данные, чтобы избежать этой проблемы, вы можете использовать функцию для получения сначала текущее состояние, а затем установите нужные значения.
setConnections(prev => ({
...prev,
connectionA: { ...prev.connectionA, connected: true }
})
)
В этом случае prev
имеет текущие значения в любой момент времени, и вы можете смело назначать все, что вам нужно.