大家好,这是我们GraphQl系列的第四部分。在这一部分中,我们将讨论如何使用Apollo客户端软件包在React Js中使用GraphQl创建API。
什么是Zustand?
zustand只是一个小型且高效的状态管理库,就像redux一样,但大小比用于创建应用程序的全局状态的redux小。
什么是阿波罗客户?
使用Apollo客户端,您可以轻松地将React组件连接到GraphQl API,获取和管理数据,并将应用程序的本地状态与服务器同步。它提供了一种声明性和直观的方式来管理您的应用程序数据并将GraphQl无缝集成到您的React组件中。
如何在React中设置Zustand和Apollo客户端?
转到React应用的主页并粘贴此代码
"use client";
import { ApolloClient, InMemoryCache, ApolloProvider } from "@apollo/client";
import {create} from 'zustand';
type FormStore = {
id: number;
setId: (newId: number) => void;
name: string;
setName: (newName: string) => void;
age: number;
setAge: (newAge: number) => void;
role: string;
setRole: (newRole: string) => void;
isEmployee: boolean;
setIsEmployee: (newIsEmployee: boolean) => void;
isUpdate: boolean;
setIsUpdate: (newIsUpdate: boolean) => void;
};
export const useCounterStore = create<FormStore>((set) => ({
id:100,
setId:(newId:number) => set({ id: newId }),
name:"User",
setName:(newName:string) => set({ name: newName }),
age:18,
setAge:(newAge:number) => set({ age: newAge }),
isEmployee:false,
setIsEmployee:(newIsEmployee:boolean) => set({ isEmployee: newIsEmployee }),
role:"Tester",
setRole:(newRole:string) => set({ role: newRole }),
isUpdate:false,
setIsUpdate:(newIsUpdate:boolean) => set({ isUpdate: newIsUpdate })
}));
export default function UsersList() {
const client = new ApolloClient({
cache: new InMemoryCache(),
uri: "http://localhost:4000/graphql",
});
return (
<ApolloProvider client={client}>
<main>
{children}
</main>
</ApolloProvider>
);
}
- 首先,我们导入了所需的软件包
- 然后,我们定义了在Zustand的全球商店中使用的字段类型。
- 那么,我们必须创建Zustand存储,并传递这些状态的状态和设置函数的初始值。我们还将这家商店导出到其他组件中
- 然后,我们通过传递GraphQL API和CACHE的2个参数URL来创建Apollo客户端的新实例,以设置数据的高速缓存值。然后,我们将此客户端实例传递给Apollo提供商客户端。
因此,我们已经设置了我们的全球状态和Apollo客户端以在我们的React应用程序中使用,在下一部分中,我们将讨论如何在React应用程序中获取数据并将其显示。
感谢您检查此帖子
您可以与我联系 -
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