У меня есть некоторый общий код, который пытается обновить определенные состояния. Доступ к объекту возможен по ключам в массиве, например:
let x = {person: { name: "Dennis"}}
console.log(x["person"]["name"])
В реакции можно (и часто используется при проверке ввода) получить доступ к определенному ключу состояния по массиву, например:
//event.target.name = input field property name="firstName"
this.setState({
[event.target.name]: event.target.value
});
Что обновит this.state.firstName
до значения ввода.
Я пытаюсь связать вложенные сложные объекты с входными данными, чтобы избежать использования функций перевода. Поэтому, если мое состояние содержит { person: {name : "" } }
, я хочу получить к нему динамический доступ через this.state ["person"] ["name"] - что работает. Я хочу использовать ту же запись в setState
, потому что тогда я могу привязать свои вложенные данные о состоянии к таким входам: <input name="person.name" />
и в своем обработчике изменений я могу искать периоды: if(ev.target.name.split("."))...
Однако я не могу получить доступ к состоянию таким же образом в setState, потому что это объект, поэтому:
const args = ev.target.name.split(".");
this.setState({
[args[0]][args[1]]: ev.target.value
});
Есть ли в любом случае, чтобы сделать это?