我知道这个标题似乎是许多其他问题的重复,但我正在为我的问题寻找一个具体的YES or NO answer,这是我在这里看到的所有帖子中都没有遇到的.

我正在开发一个学校应用程序admin dashboard,其中我有你能想象到的所有选项,这样的应用程序的管理员可能会有.

现在,当我输入这routes个数据中的任何一个时,我想要做许多不同类型的fetching个数据. 使用useEffect似乎是显而易见的解决方案,但它直到呈现部分结束才会运行,这会产生许多undefined个变量.

我在其他帖子中看到的解决方案是:

  • 使用conditional rendering-这解决不了任何问题,因为我想在第一次渲染时查看数据.
  • Parent Component上获取所有请求的数据,然后将数据作为prop传递.这个解决方案的问题是,它要求dashboard代码是super complex,因为从技术上讲,它将在一个文件中拥有应用程序中的所有获取!这将创建一个big, complicated and error-prone代码库.

所以我的问题可以归结为:有other way个人可以在第一次呈现时获取和查看数据吗?如果有的话,那是什么呢?如果没有,那么在RESPECT中处理这个问题的最佳解决方案是什么?谢谢.

推荐答案

  • 从Reaction-路由文档中,您可以使用loader

每条路由都可以定义一个"加载器"函数,以便在路由元素呈现之前向其提供数据.

保持清洁

  • 您可以将加载器函数放在相关的组件文件中,然后导入到路由

"事件"数据的示例:

import { createBrowserRouter, RouterProvider } from "react-router-dom";
import EventDetailPage, {
  loader as eventDetailsLoader,
} from "./pages/EventDetailPage";

//Create router
const router = createBrowserRouter([
  {
    path: "/",
    element: <RootLayout />,
    errorElement: <ErrorPage />,
    children: [
      { index: true, element: <HomePage /> },
      {
        path: "events",
        element: <EventsRootLayout />,
        children: [
          {
            index: true,
            element: <EventsPage />,
            loader: eventsLoader,
          },
          {
            path: ":eventID",
            loader: eventDetailsLoader,
            element: <EventDetailPage />,
          },
          
import { json, useLoaderData, useParams } from "react-router-dom";
import EventItem from "../components/EventItem";

function EventDetailPage() {
  const params = useParams();
  const data = useLoaderData();

  return <EventItem event={data.event} />;
}

export default EventDetailPage;

export async function loader({ request, params }) {
  const id = params.eventID;
  const response = await fetch("http://localhost:8080/events/" + id);

  if (!response.ok) {
    throw json({ message: "Could not fetch details" }, { status: 500 });
  } else {
    return response;
  }
}

Reactjs相关问答推荐

如何使用React防止并发注册并处理Firestore数据库中的插槽可用性

Shadck/ui Select -当用户 Select 项目时更改状态

react 表复选框不对任何操作做出react

有没有办法让两个状态在两次精准渲染中更新?

TypeError:SearchProduct.get()获得了意外的关键字参数查询'

在transformResponse中使用来自其他查询的缓存

无法找出状态正在被更改的位置

在 React 中是否有任何理由要记住 Redux 操作创建者?

无法在 NextJS 中获取嵌套对象

.populate() 方法在 mongodb 中不起作用

tRPC/react-query,在所有查询完成之前,组件不会收到任何 useQuery 的结果

我从 S3 存储桶下载图像时收到错误

使用新数据更新时,React 不更新具有过滤功能的深层嵌套对象数组中的变量状态

计数器递增 2 而不是 1

当我在 React Router Dom 中使用两个参数并直接在页面上导航时,数据获取没有发生

我应该如何将字符串作为props 传递给 React 组件?

使用 react pro 侧边栏展开折叠菜单

为什么我在此代码段中看不到 useEffect for count = 1?

getAttribute 函数并不总是检索属性值

如何实现两个 SVG 形状相互叠加的 XOR 操作?