GraphQL – ReactJS Fetch Data

سلام به همه، در این قسمت از سری GraphQL، قصد داریم با استفاده از بسته Apollo Client داده ها را واکشی کنیم.
یک دایرکتوری به نام “component” ایجاد کنید و داخل آن یک فایل به نام “Queries.ts” ایجاد کنید و این کد را در آن قرار دهید.
// Queries.ts
export const ALL_USERS = gql`
query Users {
users {
name
role
id
isEmployee
age
}
}
`;
- ما فقط یک پرس و جو ایجاد کردیم، فیلدهایی را که می خواهیم در داده های خود به عنوان نام، نقش، شناسه، isEmployee و سن ارسال کنیم، این فیلدها در داده های ما برگردانده می شوند.
فایل دیگری به نام “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” برای واکشی داده های خود با ارسال Query ایجاد شده به قلاب “useQuery” استفاده می کنیم. داده، وضعیت بارگذاری و حالت خطا را می دهد.
- سپس با استفاده از روش Map داده ها را نقشه برداری کردیم، همچنین حالت بارگذاری و خطا را برای UI تنظیم کردیم.
- به یاد داشته باشید که ما نمیتوانیم این مورد را به هیچ رویدادی متصل کنیم، برای این منظور، به قلاب “useLazyQuery” نیاز داریم، که در ادامه در این سری صحبت خواهیم کرد.
در قسمت بعدی این سری GraphQL، ویژگی به روز رسانی و حذف داده های خود را با استفاده از هوک “useMutation” پوشش خواهیم داد.
از اینکه این پست را بررسی کردید متشکرم
می توانید با من تماس بگیرید –
اینستاگرام – https://www.instagram.com/supremacism__shubh/
لینکدین – 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