fetch on Render vs render as Fetch

Fetch on Render

// Fetch on Render
function ProfilePage() {
  const [user, setUser] = useState(null);

  useEffect(() => {
    fetchUser().then(u => setUser(u));
  }, []);

  if (user === null) {
    return <Loading />;
  }
  return <Profile user={user} />;
}

Render as Fetch

// Render as you fetch
const resource = fetchProfileData();

function ProfilePage() {
  return (
    <Suspense fallback={<Loading />}>
      <ProfileDetails resource={resource} />
    </Suspense>
  );
}

function ProfileDetails({ resource }) {
  const user = resource.user.read();
  return <Profile user={user} />;
}