Create Idea via Form & POST Request
Now, we want to be able to submit our form and create a new idea. We will use the POST method to do this. We will also use the axios library to make the API call.
In the services/ideasApi.js file, add the following method to the class:
createIdea(data) {
return axios.post(this._apiUrl, data);
}
Now go to components/ideaForm.js and add the following code:
import IdeasApi from '../services/ideasApi';
Make the handleSubmit method async and add the following code:
async handleSubmit(e) {
e.preventDefault();
const idea = {
text: this._form.elements.text.value,
tag: this._form.elements.tag.value,
username: this._form.elements.username.value,
};
// Add idea to server
const newIdea = await IdeasApi.createIdea(idea);
// Clear fields
this._form.elements.text.value = '';
this._form.elements.tag.value = '';
this._form.elements.username.value = '';
document.dispatchEvent(new Event('closemodal'));
}
Update the DOM
We also want the DOM to get updated, so let's create a method in the ideaList component
addIdeaToList(idea) {
this._ideas.push(idea);
this.render();
}
Now, bring in the ideaList component in the components/ideaForm.js file and add the following code right under where we called the IdeasApi.createIdea method:
import IdeaList from './IdeaList';
constructor() {
this._formModal = document.querySelector('#form-modal');
this._ideaList = new IdeaList(); // <--- Add this line
}
// Add idea to list
this._ideaList.addIdeaToList(newIdea.data.data);
Now, try and add a new idea via the form.