import { useState, useEffect, useCallback } from 'react'; import { createHook } from 'hookleton'; const URL = 'https://randomuser.me/api/?results=10'; const useFetchUsers = createHook(() => { const [users, setUsers] = useState({}); const [again, updater] = useState(); async function fetchData() { const response = await fetch(URL); const data = await response.json(); console.log('[useFetch]: Fetched 10 random users'); setUsers(data); } useEffect(() => { fetchData(); }, [again]); const fetchAgain = useCallback(() => updater(s => ~s), []); return [users, fetchAgain]; }); const Hookletons = () => { useFetchUsers.use(); return null; }; const RenderUser = ({ render }) => { const [data, fetchAgain] = useFetchUsers(); return ( ); }; const Name = ({ name }) => ( {name.first} {name.last} ); const Gender = ({ gender }) => {gender}; const Location = ({ location }) => ( {location.city}, {location.state} ); const Email = ({ email }) => {email}; const Users = () => (
); // Repeat `Users` component 4 times export default () => ( <>

Fetched 10 random users from: {URL}

);