Hey guys, I have a React project using materialize and I have a create component that looks like this:
import React from 'react'
import { Modal, Button } from 'react-materialize'
const ComposeArt = ({postArt}) => {
const createArt= (ev) => {
ev.preventDefault()
let title = ev.target[0].value
let year = ev.target[1].value
let medium = ev.target[2].value
let url = ev.target[3].value
return postArt(title, year, medium, url)
}
return <div>
<br />
<Modal className="Modal"
header='Create Art!'
trigger={<Button className="waves-effect waves-red">Create Art</Button>}>
<form onSubmit={createArt}>
<label>Title</label>
<input type="text" name="Title" />
<label>Year</label>
<input type="text" name="Year" />
<label>Medium</label>
<input type="text" name="Medium" />
<label>Url</label>
<input type="text" name="Url" />
<Button className="waves-effect waves-red btn modal-close" name="submit">Add Art</Button>
</form>
</Modal>
</div>
}
export default ComposeArt
With this in my app.js:
postArt = async (title, year, medium, url) => {
const artBody = {
title: title,
year: year,
medium: medium,
poster: url
}
const response = await fetch(`${API}/chizetteart`, {
method: "POST",
mode: "cors",
cache: "no-cache",
credentials: "same-origin",
headers: {
"Accept": "application/JSON",
"Content-Type": "application/json",
"token": this.state.actualToken
},
body: JSON.stringify(artBody)
})
if (response.status !== 200) {
alert(`Post Art: Invalid post`)
} else {
alert(`Art Created!`)
}
setTimeout(()=>this.getArtList(), 100)
}
I can create a new post, but the url doesn’t work and goes right back to the placeholder kitten. I have tried type=“url” but that doesn’t fix anything. Any ideas?