react-simpler-forms
Version:
React Higher Order component that manages all of your forms state along with other components that make it easy to create, validate, perform search queries, and submit single or multi-step forms.
64 lines (40 loc) • 1.11 kB
JavaScript
// xhr request
let currentxhr = null;
export default function FormAPI(updateForm, payload) {
if (currentxhr && payload.cancelable) {
currentxhr.abort();
}
updateForm('toggleLoading')
var xhr = new XMLHttpRequest();
currentxhr = xhr;
xhr.open("POST", payload.url, true);
xhr.setRequestHeader("Accept", "application/json");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.onreadystatechange = function() {
updateForm('toggleLoading')
let response
if (payload.property) {
response = {
property: payload.property,
data: xhr.response
}
} else {
response = xhr.response
}
if (this.readyState === XMLHttpRequest.DONE) {
if (this.status === 200) {
if (typeof payload.success === 'function') {
payload.success(response)
} else {
updateForm(payload.success, response)
}
} else {
updateForm(payload.error, response)
}
}
};
xhr.onabort = function () {
currentxhr = null;
};
xhr.send(JSON.stringify(payload.data));
}