Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

React – JS | Passing body variable name rather than its content

I think I have a good question. I’m making my own overarching request repo that I can just refer to rather than embedding all requests in each separate JS file.

For requests where I’m passing a body I need to pass two things into stringify

  1. The identifier denoted field
  2. The value denoted content

I don’t seem to be able to replace the identifier field with its actual content, I think it is passing "field" being its name rather than the content of the "field" string.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

Calling code:

Request.Request.useSendPostWithBody("User/checkAlt","email","XXX@XXX.uk")

Request code:

Request.useSendPostWithBody = (endpoint, field, content) => {
    const [ data, setData ]=useState('')

        useEffect(() => {

            fetch(`${window.ipAddress.ip}/${endpoint}`, {
                method: "POST",  
                headers:{'Content-Type':'application/json'},
                body: JSON.stringify({ email: content })}) // this works as the required field for this request is email

                // body: JSON.stringify({ field : content })}) // this doesn't and here is where I think the issue lies because not all requests are going to pass "email"

            .then((result)=> { return result.json() })

            .catch(error =>{ 
            console.log("error")
            })

            .then((data)=>{ setData(data)
            console.log('data')
            console.log(data) })

        },[])
    }

>Solution :

you need to use brackets [] to denote that the key name needs to be evaluated, like so:

{
  // other values,
  body: JSON.stringify({ [field]: content })}),
}
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading