GraphQl- reactjs提取数据
#javascript #网络开发人员 #react #graphql

大家好,在GraphQl系列的这一部分中,我们将使用Apollo客户端软件包获取数据。

创建一个称为“组件”的目录,内部创建一个名为“ queries.ts”的文件并粘贴此代码

// Queries.ts
export const ALL_USERS = gql`
  query Users {
    users {
      name
      role
      id
      isEmployee
      age
    }
  }
`;
  • 我们刚刚创建了一个查询,将我们想要的字段传递为名称,角色,ID,ISEMPHOREEE和年龄,这些字段将在我们的数据中返回。

创建另一个名为“ display.tsx”的文件,然后粘贴此代码。

// Display.tsx
import { useQuery } from "@apollo/client";
import { ALL_USERS } from "./Queries";
import { memo } from "react";

interface User {
  name: string;
  role: string;
  id: string;
  isEmployee: boolean;
  age: number;
}

const DisplayData = () =>  {
  const { data, loading, error } = useQuery<{ users: User[] }>(ALL_USERS);

  if (loading) {
    return <p>Loading...</p>;
  }
  if (error) {
    return <p>Some Error Occurred...</p>;
  }

  return (
    <main className="px-5 mt-10">
      <h1 className="text-slate-900 text-center text-lg font-bold">All Users</h1>
      <section className="mt-10">
        <div className="flex gap-6 justify-center flex-wrap mt-3">
          {data && 
          data.users.length === 0 ? <h1 className="text-xl font-bold"> No User Found</h1> : 
            data?.users.map((user: User) => {
              return (
                <div
                  key={user.id}
                  className="flex flex-col justify-between group border border-blue-400 rounded-lg w-60 p-4
                 hover:bg-slate-900 hover:border-none hover:outline hover:outline-blue-400 hover:outline-offset-4 
                 transition ease-in-out"
                >
                  <div>
                    <h1 className="text-xl font-bold group-hover:text-slate-100">
                      Name: {user.name}
                    </h1>
                    <p className="group-hover:text-blue-200">
                      Role: {user.role}
                    </p>
                    <p className="group-hover:text-violet-200">
                      Age: {user.age}
                    </p>
                    <p
                      className={`${
                        user.isEmployee.toString() === "true"
                          ? "group-hover:text-green-200"
                          : "group-hover:text-red-200"
                      }`}
                    >
                      Employee: {user.isEmployee.toString()}
                    </p>
                  </div>
                </div>
              );
            })}
        </div>
      </section>
    </main>
  );
}

export default memo(DisplayData)
  • 我们正在使用“ usequery”钩子通过将创建的查询传递给“ usequery”钩子来获取数据。它提供数据,加载状态和错误状态。
  • 然后使用映射方法,我们映射了数据,还为UI设置了加载和错误状态。
  • 请记住,我们不能将其附加到任何活动处理程序上,因为我们需要“ uselazyquery”钩子,我们将在本系列稍后讨论。

在此GraphQL系列的下一部分中,我们将使用“ USEMOUT”挂钩介绍数据的更新和删除功能。

感谢您检查此帖子
您可以与我联系 -
Instagram -https://www.instagram.com/supremacism__shubh/
LinkedIn -https://www.linkedin.com/in/shubham-tiwari-b7544b193/
电子邮件-shubhmtiwri00@gmail.com

^^您可以在下面的链接上为我提供一些捐款,谢谢^^^
☕ --> https://www.buymeacoffee.com/waaduheck <--

也检查这些帖子
https://dev.to/shubhamtiwari909/website-components-you-should-know-25nm

https://dev.to/shubhamtiwari909/smooth-scrolling-with-js-n56

https://dev.to/shubhamtiwari909/swiperjs-3802

https://dev.to/shubhamtiwari909/custom-tabs-with-sass-and-javascript-4dej