Untitled

 avatar
unknown
plain_text
2 years ago
1.9 kB
5
Indexable
import { useState } from 'react';
import './App.css';

function App() {
  const [formFields, setFormFields] = useState({data:[
    { name: '', age: '' }
  ], presentationTopic: ''})

  const handleFormChange = (event, index) => {
    let data = [...formFields];
    data[index][event.target.name] = event.target.value;
    setFormFields([...formFields.data], data);
  }

  const submit = (e) => {
    e.preventDefault();
    console.log(formFields)
  }

  const addFields = () => {
    let object = {
      name: '',
      age: ''
    }

    setFormFields([...formFields.data, object])
  }

  const removeFields = (index) => {
    let data = [...formFields];
    data.splice(index, 1)
    setFormFields(data)
  }

  const handlePresentation = (e)=>{
    setFormFields(...formFields, {
        presentationTopic: e.target.value
      })
  }

  return (
    <div className="App">
      <form onSubmit={submit}>
          <input
                name='presentationTopic'
                placeholder='Presentation Topic'
                onChange={event => handlePresentation(event)}
                value={form.presentationTopic}
              />
        {formFields.data.map((form, index) => {
          return (
            <div key={index}>
              <input
                name='name'
                placeholder='Name'
                onChange={event => handleFormChange(event, index)}
                value={form.name}
              />
              <input
                name='age'
                placeholder='Age'
                onChange={event => handleFormChange(event, index)}
                value={form.age}
              />
              <button onClick={() => removeFields(index)}>Remove</button>
            </div>
          )
        })}
      </form>
      <button onClick={addFields}>Add More..</button>
      <br />
      <button onClick={submit}>Submit</button>
    </div>
  );
}

export default App;
Editor is loading...