как объединить данные из json с «this.props» в react

#reactjs

#reactjs

Вопрос:

Я пытаюсь динамически создавать текстовые поля с помощью data json, проблема возникает, когда я хочу установить значение и функцию onChange для каждого поля.

Я пытался использовать string, но у меня не получилось

значение={ ${this.state}. ${textfield.label} }

значение={ this.state.${textfield.label} }

  this.state = {     
  label1: "",
  label2 : ""     
};
  

}

 {textfields.map((textfield) => {
return(
      <TextField
      key={textfield.label}
      label={textfield.name}
      margin="normal"
      fullWidth
      id={textfield.label}
      required
      value={`${this.state}.`  `${textfield.label}`}
      onChange={e => this.setState({ `${textfield.label}` : e.target.value })}
      />
      )
  })
}
  

проблема заключается в значении и onChange

Я ожидаю значение ={this.state.label1} значение={this.state.label2}

onChange={e => this.setState({ label1: e.target.value })} onChange={e => this.setState({ label2: e.target.value })}

Я получил значение = [object Объект].label1 значение = [object объект].label2

или значение=»this.state.label1″ но в виде строки в значении texfield=»this.state.label1″ но в виде строки в texfield

onChange показывает синтаксическую ошибку

Ответ №1:

Просто используйте обычный JavaScript внутри фигурных скобок. Вот так:

  value={this.state[textfield.label]}
  

Комментарии:

1. значение={this.state[текстовое поле. label]} и onChange={e => this.setState({ [текстовое поле. метка]: e.target.value })}

Ответ №2:

Можете ли вы добавить к ним имя, подобное этому?

{текстовые поля.map((текстовое поле) => {

 return(
      <TextField
      key={textfield.label}
      label={textfield.name}
      margin="normal"
      fullWidth
      id={textfield.label}
      required
    name={textfield.label}
      value={`${this.state}.`  `${textfield.label}`}
      onChange={e => this.setState({ `e.target.name` : e.target.value })}
      />
      )
  })
}
  

Комментарии:

1. да, но react показывает ошибку синтаксического анализа: неожиданный токен при первом ` из e.target.name