/** * Main React app logic */ import React, { useState, useEffect, useCallback } from "react"; import Detail from "./Detail.js"; import buildGraph from "../graph.js"; export default function App() { const [db, setDb] = useState(null); const [node, setNode] = useState(null); const [detailVisible, setDetailVisible] = useState(null); useEffect(async () => { const newDb = await loadDB(); setDb(newDb); buildGraph(newDb, { click: handleClick, }); }, []); const handleClick = useCallback((node) => { setNode(node); setDetailVisible(true); }); const handleClose = useCallback((node) => { setDetailVisible(false); }); return (
); } async function loadDB() { const request = await fetch("/assets/db.json"); return await request.json(); }