Open2
colocationとgraphql-codegenについて
graphql-codegenメモ
ディレクトリ構造
shell
frontend/company/src/component/pages/teams/
├── teamsPage
│ ├── index.tsx
│ └── teams.graphql
こんなクエリ書いて
teams.graphql
query Teams() {
teams() {
...userInfoFragment
...selectTeamMemberFragment
}
}
npm run generate
すると、↓のhooksが生成される
UserInfo.tsx
const { data, refetch } = useTeamsQuery()
colocationを使った実装
ディレクトリ構造
shell
frontend/company/src/component/molecules/
├── selectTeam
│ ├── index.tsx
│ └── userTeams.fragment.graphql
└── userInfo
├── index.tsx
└── userInfo.fragment.graphql
↓のfragment書いて、
userInfo.graphql
fragment userInfo on User {
profileUrl
name
}
npm run generate
すると、↓のfragmentの型が生成される。Propsとして使い回すと便利。
UserInfo.tsx
type Props = {
user: UserInfoFragment;
};
export const UserInfo = ({ user }: Props): JSX.Element => (
<HStack>
<Stack>
<Image src={user.profileUrl} />
</Stack>
<Stack>{user.name}</Stack>
</HStack>
);