Search code examples
reactjsobjectstate

add in object in array after submit


I am facing a problem. If you can give me some advice, it would be a huge help for me.

I have a state with object

const [work , setWork] = useState({company:"" , jobTitle:"", jobType:"", location:""});

const [list, setList] = useState([]);

I want when the user update and submit the state, I send the object in an array list [ ]

companyValue is is the result of onChange

const add = (e) => {
            e.preventDefault();
    
            if(companyValue){
                setWork(prevState => ({
                    ...prevState,
                    company: companyValue
                }))
                 setList(prevState => ({
                    ...prevState,
                    work
                 }))
                    }
               }

and I want to have a result like this

list = [
        {company:"" , jobTitle:"", jobType:"", location:""},
        {company:"" , jobTitle:"", jobType:"", location:""},
        {company:"" , jobTitle:"", jobType:"", location:""}
        ]


Solution

  • Do something like this:

    const newWork = {
      ...work,
      company: companyValue
    }
    
    setWork(newWork);
    
    setList(
      list.concat(newWork)
    )
    

    If you want to add only that companyValue, which I assume look like this: {company:"" , jobTitle:"", jobType:"", location:""}, then you can do this:

    setList(
      list.concat(companyValue)
    );