Skip to content

Instantly share code, notes, and snippets.

@davidtran
Created July 6, 2020 04:40
Show Gist options
  • Save davidtran/b225fc4a8e8e05a24729d5ab5d916840 to your computer and use it in GitHub Desktop.
Save davidtran/b225fc4a8e8e05a24729d5ab5d916840 to your computer and use it in GitHub Desktop.
Simplifify pending, error from a ajax request
import React, { useState } from 'react';
const useRequest = ({ request }) => {
const [result, setResult] = useState(null);
const [error, setError] = useState(null);
const [isRunning, setIsRunning] = useState(false);
async function execute(args) {
setIsRunning(true);
try {
const result = await request(args);
if (result.data) {
setResult(result.data);
} else {
setResult(result);
}
setError(null);
setIsRunning(false);
callback(result);
} catch (err) {
setError(err);
setIsRunning(false);
callback(err);
}
}
function reset() {
setResult(null);
setError(null);
setIsRunning(false);
}
return {
execute,
reset,
result,
error,
isRunning,
}
}
export default useRequest;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment