Как изменить и сохранить вложенные данные в «состоянии» с помощью «ввода текста» - PullRequest
0 голосов
/ 05 марта 2020

Material-ui Версия: 0.1

значение в состоянии:

formatter = [
      {currencyField: "", amountField: ""}
      {accountField: "", amountField: ""}
      {numberField: ""}
    ]

Мне нужно сделать так, чтобы каждый элемент объекта в state можно было изменить с помощью mui.TextField компонент от material-ui.

let formatterJson = JSON.parse(this.state.formatter);
let jsx = [];
for (const prop in formatterJson) {
jsx.push(this.getTextField(prop, formatterJson[prop]));

getTextField(key, objVal) {
        return (
            <mui.TextField
                style={{fontSize: '14px', marginRight: '10px'}}
                name={key}
                value={objVal}
                fullWidth={false}
                hintText={key}
                onChange={(event) => {
                    objVal = event.target.value
                }}
            />
        )
    }

1 Ответ

0 голосов
/ 05 марта 2020

Значение TextField не меняется, поскольку val, отправляемое на getTextField, всегда одинаково. Чтобы это исправить, значение, которое вы получили в onChange val = event.target.value;, необходимо снова вернуть компоненту.

Один из способов добиться этого - сделать копию оригинала JSON и сохранить ее в состояние, а также при изменении значения любого поля обновите json соответственно setState с недавно обновленным json.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...