Как обновить состояние для вложенного объекта в реакции js, который в моем примере является DeviceProperties (IP-адрес, имя пользователя и пароль) - PullRequest
0 голосов
/ 17 января 2020

Как обновить состояние для вложенного объекта в реакции js, который в моем примере является DeviceProperties (IP-адрес, имя пользователя и пароль)

[
  {
    "DeviceId": 217,
    "Name": "My Name",
    "PairedNetworkName": null,
    "Description": null,
    "VersionNumber": null,
    "DeviceProperties": {
      "IPAddress": "185.213.180.129:9900",
      "UserName": "admin",
      "Password": "123456789",
    },
  }
]

Ответы [ 2 ]

0 голосов
/ 17 января 2020

Вы можете получить доступ к значению вложенного объекта, используя Точечная нотация например DeviceProperties.IPAddress. Например, если вы пытаетесь сохранить только IP-адрес, вы можете использовать

this.setState({ IPAddress: DeviceProperties.IPAddress })

0 голосов
/ 17 января 2020

В вашем редукторе:

[...]
case UPDATE_DEVICE_PROPERTIES:
  return {
    ...device,
    DeviceProperties: { [...] }
  }
break;
[...]

В этом примере я показываю, как вы можете обновить одно устройство, если вы уже выбрали это устройство. Как я полагаю, вы бы перебрали свой массив устройств [] и нашли правильное устройство. Тогда вы будете использовать деструктуризацию объекта (три точки ... ОБЪЕКТ, например ... устройство) для обновления только необходимых частей.

Подробнее о деструктурировании объекта: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment

Официальные редукционные документы для обновления объектов: https://redux.js.org/basics/reducers/#handling -action

...