// query.graphql
queryGetUser($id: ID!){user(id: $id){idemailname}}// 사용
import{useGetUserQuery}from'./__generated__/types';functionProfile({id}:{id: string}){const{data,loading,error}=useGetUserQuery({variables:{id}});if(loading)return<Spinner/>;if(error)return<Errormsg={error.message}/>;return<h1>{data?.user.name}</h1>;}
Cache 정책
constclient=newApolloClient({cache: newInMemoryCache({typePolicies:{Query:{fields:{orders:{merge(existing=[],incoming){return[...existing,...incoming];}},// pagination
},},Order:{keyFields:['id'],fields:{items:{merge: false}},// 항상 replace
},},}),});
Mutation + cache update
const[createPost]=useCreatePostMutation({update(cache,{data}){cache.modify({fields:{posts(existing=[]){return[...existing,cache.writeFragment({data: data?.createPost,fragment: gql`fragment NewPost on Post { id title }`,})];},},});},});