Я хочу создать некоторые компоненты формы, используя React. Я знаю, как это сделать, используя чистые JavaScript от createElement()
и такие методы, не уверен, как бы я go об этом сказал в React.
Мой массив JSON будет выглядеть так:
[{
"tag": "input",
"name": "hiddenInput",
"id": "hiddenInput",
"type": "hidden",
"label": "Hidden Label"
},{
"tag": "input",
"name": "textInput",
"id": "textInput",
"type": "text",
"label": "Text Label"
}, {
"tag": "input",
"name": "passwordInput",
"id": "passwordInput",
"type": "password",
"label": "Password Label"
}, {
"tag": "input",
"name": "emailInput",
"id": "emailInput",
"type": "email",
"label": "Email Label"
}, {
"tag": "input",
"name": "phoneInput",
"id": "phoneInput",
"type": "text",
"label": "Phone Label"
}, {
"tag": "textarea",
"name": "textarea",
"id": "textarea",
"label": "Textarea Label"
}, {
"tag": "input",
"name": "dateInput",
"id": "dateInput",
"type": "date",
"label": "Date Label"
}, {
"tag": "input",
"name": "checkboxInput",
"id": "checkboxInput",
"type": "checkbox",
"label": "Checkbox Label"
}, {
"tag": "input",
"name": "radioInput",
"id": "radioInput",
"type": "radio",
"label": "Radio Label"
},{
"tag": "button",
"name": "buttonInput",
"id": "buttonInput",
"type": "button",
"label": "Submit"
}];
, и мой желаемый результат будет похож на:
render() {
return (
<Form onSubmitStart={this.props.onSubmitStart}>
<Input
name="hiddenInput"
id="hiddenInput"
type="hidden"
label="Hidden Label"
value={this.state.hiddenInput}
/>
<Input
name="textInput"
id="textInput"
type="text"
label="Text Label"
/>
<Input
name="passwordInput"
id="passwordInput"
type="password"
label="Password Label"
/>
<Input
name="emailInput"
id="emailInput"
type="email"
label="Email Label"
/>
<PhoneInput
name="phoneInput"
id="phoneInput"
type="text"
country={"us"}
enableAreaCodes={true}
onlyCountries={["us"]}
areaCodes={{ us: ["999","888"] }}
inputProps={{
name: "phone",
country: "us",
required: true,
autoFocus: true
}}
value={this.state.phone}
onChange={this.handlePhoneInput}
/>
<textarea
name="dateInput"
id="dateInput"
rows={this.state.rows}
cols={this.state.cols}
>
</textarea>
<Input
name="dateInput"
id="dateInput"
type="date"
label="Date Label"
onChange={this.handleDateInput}
/>
<Checkbox
name="checkboxInput"
id="checkboxInput"
type="checkbox"
label="Checkbox Label"
checked={this.state.checkbox}
/>
<Radio
name="radioInput"
id="radioInput"
type="radio"
label="Radio Label"
value={this.state.radio}
/>
<Button
name="buttonInput"
id="buttonInput"
type="button"
label="Button Label"
> Submit </Button>
</Form>
);
}
Как бы я это сделал?
Статьи
JSON основанные на динамике c формы с ReactJS
Как создать React. js Компоненты Динамически
(Спасибо! Я новичок в React Framework.)