FragmentType } from './gql'; import { UserAvatar } from './UserAvatar'; const fragment = graphql(` fragment PostSummary_Post on Post { id title author { name ...UserAvatar_User } } `); export function PostSummary(props: { post: FragmentType<typeof fragment> }) { const post = useFragment(fragment, props.post); return ( <> <a href={`/posts/${post.id}`}>{post.title}</a> written by <span>{post.author.name}</span> <UserAvatar user={post.author} /> </> ); } PopularPosts (Root) PostSummary PostSummary
FragmentType } from './gql'; import { UserAvatar } from './UserAvatar'; const fragment = graphql(` fragment PostSummary_Post on Post { id title author { name ...UserAvatar_User } } `); export function PostSummary(props: { post: FragmentType<typeof fragment> }) { const post = useFragment(fragment, props.post); return ( <> <a href={`/posts/${post.id}`}>{post.title}</a> written by <span>{post.author.name}</span> <UserAvatar user={post.author} /> </> ); } PopularPosts (Root) PostSummary PostSummary ඞཁͱ͢ΔσʔλࣗࣗͰએݴ͢Δ
FragmentType } from './gql'; import { UserAvatar } from './UserAvatar'; const fragment = graphql(` fragment PostSummary_Post on Post { id title author { name ...UserAvatar_User } } `); export function PostSummary(props: { post: FragmentType<typeof fragment> }) { const post = useFragment(fragment, props.post); return ( <> <a href={`/posts/${post.id}`}>{post.title}</a> written by <span>{post.author.name}</span> <UserAvatar user={post.author} /> </> ); } PopularPosts (Root) PostSummary PostSummary ࢠίϯϙʔωϯτ͕ඞཁͱ͢Δσʔλ 'SBHNFOUΛ௨͚ͯͩ͢͡ ͦͷৄࡉʹ͍ͭͯෆՄ
on Post { id title author { name ...UserAvatar_User } } query PopularPosts_Query { popularPosts { id ...PostSummary_Post } } PopularPosts Component (Root Component) PostSummary Component UserAvatar Component Component Tree Query Composition Colocate Colocate Colocate
on Post { id title author { name ...UserAvatar_User } } query PopularPosts_Query { popularPosts { id ...PostSummary_Post } } PopularPosts Component (Root Component) PostSummary Component UserAvatar Component Component Tree Query Composition Operation for Root Component Colocate Colocate Colocate