Created
July 6, 2020 04:40
-
-
Save davidtran/b225fc4a8e8e05a24729d5ab5d916840 to your computer and use it in GitHub Desktop.
Simplifify pending, error from a ajax request
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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