我正在努力在我的Reaction应用程序中使用SuspenseAwait.我正在使用数据加载器在呈现组件之前加载数据. 当我简单地使用装载器函数和useLoderData函数时,我就能够获取数据.但是,在获取数据时有一些延迟,所以我想使用SuspenseAwait延迟加载程序.

When I use this I only get some Response object. enter image description here

Home.jsx(S)

import React, { Suspense } from "react";
import { getBookmarks } from "./api";
import { useLoaderData, defer, Await } from "react-router-dom";

export function loader() {
  return defer({ bookmarks: getBookmarks() });
}

export default function Home() {
  const dataPromise = useLoaderData();

  function renderBookMarks(bookmarks) {
    console.log(bookmarks);
  }

  return (
    <div>
      <h2>Welcome to bookmarks</h2>
       <Suspense fallback={<h2>Loading...</h2>}>
        <Await resolve={dataPromise.bookmarks}>
          {renderBookMarks}
        </Await>
      </Suspense>
    </div>
  )
}

火.js

import config from './config'

const apiUrl = config.apiUrl;
const apiPort = config.apiPort;

const joinUrl = (baseUrl, url) => {
  return ${baseUrl}/${url}
}

const domain = ${apiUrl}:${apiPort}/api/bookmarks;

export async function getBookmarks(url = "") {
  url = joinUrl(domain, url)
  const data = await fetch(url);
  return data;
}

推荐答案

您将返回fetch响应对象,但您可能还希望解包响应对象,目前通常是JSON.

示例:

export async function getBookmarks(url = "") {
  url = joinUrl(domain, url);
  const response = await fetch(url);
  const data = await response.json();
  return data;
}

Reactjs相关问答推荐

eslint -无法解析模块的路径@web3modal/ethers/react导入/no-unresolved

如何使用json将购物车数组传递到后台API

如何使用react-router-dom导航到网页中的其他路由?

从`redux—thunk`导入thunk `在stackblitz中不起作用

为什么Next.js 14无法解析页面路由路径?

无法在主组件的返回语句中呈现预期组件

Antd V5组件自定义主题

关于forwardRef,我可以';我不理解第二个用例

React 状态不更新

React 应用程序可以嵌入到 PowerPoint 中吗?

如何在 Next Js 13 App Router 中添加 Favicon 图标?

无法读取未定义的react native 的属性参数

我正在try 使用 cypress 测试我的下拉列表,它 Select 值但不提交它们(手动工作)

在 Spring Cloud Gateway 中运行的 React SPA 页面刷新出现白标错误

React如何在用户登录后等待当前用户数据被获取

gtag:为什么谷歌分析即使没有被授权也会收集数据

如何将本地视频文件上传到 Google Cloud

为什么这两个 div 的渲染方式不同?

可以'读取未定义的属性(读取'路径')

react-three-fiber 场景背景比原图更亮