У меня есть другой вопрос прямо сейчас. Я постараюсь объяснить это.
Это структура моего объекта. Внутри "allgemein" в настоящий момент есть две переменные, но они будут увеличиваться со временем ...
{
id: "Abadi",
name: "Abadi",
type: "SC",
allgemein: {
charname: "Abadi",
spieler: "Malte",
},
eigenschaften: {
lebenspunkte: "30",
},
talente: {},
zauber: {},
},
Я получаю импульс следующим образом:
const {
type,
name,
allgemein: { charname, spieler },
} = this.state,
{ charakterID } = this.props;
return (
<form>
<TextField
label="type"
value={type}
onChange={this.handleChange("type")}
margin="dense"
fullWidth
/>
<TextField
label="name"
value={name}
onChange={this.handleChange("name")}
margin="dense"
fullWidth
/>
<br />
<TextField
label="charname"
value={charname}
onChange={this.handleChangeAllg("charname")}
margin="dense"
fullWidth
/>
<br />
<TextField
label="spieler"
value={spieler}
onChange={this.handleChangeAllg("spieler")}
margin="dense"
fullWidth
/>
Чтобы получить ввод моего TextField Я использую следующие функции дескриптора:
handleChange = (n) => ({ target: { value } }) => {
this.setState({
[n]: value,
});
};
handleChangeAllg = (n) => ({ target: { value } }) => {
this.setState((prevState) => ({
...prevState,
allgemein: {
...prevState.allgemein,
charname: value,
},
}));
};
- три работы, как и ожидалось
- последний перезаписывает ввод третьего и не знает почему
- handleChangeAllg: только для объектов внутри "allgemein", но не для других объектов. это не выглядит правильно.
Почему не работает последний и есть ли более элегантный способ обработки ввода?