Comment Comment by seanlaff Hmm, maybe! Is that the idiomatic way to do async? I was thinking something along the lines of this, which react devs will have written a variation of plenty of times :) import { useEffect, useState } from "react"; const GithubUser = ({ login, avatar_url, html_url }) => ( <div> <img src={avatar_url} style={{width:40, height:40}}/> <a href={html_url}>{login}</a> </div> ); export function App() { const [stargazerResp, setStargazerResp] = useState([]); const [repo, setRepo] = useState("vanjs-org/van"); useEffect(() => { fetch(`https://api.github.com/repos/${repo}/stargazers?per_page=5`) .then((r) => r.json()) .then((r) => Array.isArray(r) ? setStargazerResp(r) : setStargazerResp([])); }, [repo]); return ( <div className="App"> <input value={repo} onChange={(e) => setRepo(e.target.value)} /> <ul> {stargazerResp.map((s) => ( <li key={s.login}> <GithubUser login={s.login} avatar_url={s.avatar_url} html_url={s.html_url} /> </li> ))} </ul> </div> ); } parent seanlaff 2 years ago