Skip to content

Instantly share code, notes, and snippets.

@rfos
Forked from sadam1807/dynamic_fields_with_FC.js
Created January 6, 2022 15:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rfos/e6043d199f6a8c1e74ffd2c25a5cdc76 to your computer and use it in GitHub Desktop.
Save rfos/e6043d199f6a8c1e74ffd2c25a5cdc76 to your computer and use it in GitHub Desktop.
import React, { useState } from 'react'
import './styles.css'
const App = () => {
const [formValues, setFormValues] = useState([{ name: "", email : ""}])
let handleChange = (i, e) => {
let newFormValues = [...formValues];
newFormValues[i][e.target.name] = e.target.value;
setFormValues(newFormValues);
}
let addFormFields = () => {
setFormValues([...formValues, { name: "", email: "" }])
}
let removeFormFields = (i) => {
let newFormValues = [...formValues];
newFormValues.splice(i, 1);
setFormValues(newFormValues)
}
let handleSubmit = (event) => {
event.preventDefault();
alert(JSON.stringify(formValues));
}
return (
<form onSubmit={handleSubmit}>
{formValues.map((element, index) => (
<div className="form-inline" key={index}>
<label>Name</label>
<input type="text" name="name" value={element.name || ""} onChange={e => handleChange(index, e)} />
<label>Email</label>
<input type="text" name="email" value={element.email || ""} onChange={e => handleChange(index, e)} />
{
index ?
<button type="button" className="button remove" onClick={() => removeFormFields(index)}>Remove</button>
: null
}
</div>
))}
<div className="button-section">
<button className="button add" type="button" onClick={() => addFormFields()}>Add</button>
<button className="button submit" type="submit">Submit</button>
</div>
</form>
)
}
export default App
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment