Skip to content

Instantly share code, notes, and snippets.

@erikfenriz
Last active January 27, 2020 21:33
Show Gist options
  • Save erikfenriz/1c96b0e8b65aacfa2ce49005156a802b to your computer and use it in GitHub Desktop.
Save erikfenriz/1c96b0e8b65aacfa2ce49005156a802b to your computer and use it in GitHub Desktop.
Custom hooks
// useToggle hook
function useToggle(initialValue = false) {
const [state, setState] = useState(initialValue);
const toggle = () =>{
setState(!state);
}
return [state, toggle]
}
// Force update hook
function useForceUpdate(){
const [value, set] = useState(true); //boolean state
return () => set(value => !value); // toggle the state to force render
}
const forceUpdate = useForceUpdate();
// Component did mount hook
const useMountEffect = (fn) => useEffect(() =>{ fn()}, []);
useMountEffect(someFunction);
// Api request hook
export default () => {
const [results, setResults] = useState([]);
const [errorMessage, setErrorMessage] = useState("");
const getApi = async (url) => {
try {
const response = await settings.get(url);
setErrorMessage(false);
setResults(response);
} catch (err) {
setErrorMessage("Server request failed");
}
};
useEffect(() => {
getApi('')
}, []);
return [getApi, results, errorMessage];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment