大家好,在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