Git Product home page Git Product logo

artemkloko / amplify-graphql-apollo-hooks-generator Goto Github PK

View Code? Open in Web Editor NEW
4.0 4.0 0.0 139 KB

Generate boilerplate React Apollo hooks for queries, mutations and subscriptions for the provided introspection schema

Home Page: https://www.npmjs.com/package/amplify-graphql-apollo-hooks-generator

JavaScript 0.34% TypeScript 92.44% Handlebars 7.23%
aws appsync graphql react apollo hooks

amplify-graphql-apollo-hooks-generator's Introduction

amplify-graphql-apollo-hooks-generator

Generate boilerplate React Apollo hooks for queries, mutations and subscriptions for the provided introspection schema.


The generated hooks are just basic wrappers for Apollo hooks provided by @apollo/client and they do not offer any extra capabilities from what the Apollo hooks offer.

The only gain of using this plugin is to not waste time on creating and updating those hooks manually after schema changes. And it's especially usefull while bootstraping a new project.


Some examples of generated hooks

export const useGetUserQuery = (
  options?: QueryHookOptions<GetUserQuery, GetUserQueryVariables>
) => useQuery<GetUserQuery, GetUserQueryVariables>(gql(getUser), options);

export const useGetUserLazyQuery = (
  options?: LazyQueryHookOptions<GetUserQuery, GetUserQueryVariables>
) => useLazyQuery<GetUserQuery, GetUserQueryVariables>(gql(getUser), options);
export const useCreateUserMutation = (
  options?: MutationHookOptions<CreateUserMutation, CreateUserMutationVariables>
) => useMutation<CreateUserMutation, CreateUserMutationVariables>(gql(createUser), options);
export const useOnCreateUserSubscription = (
  options?: SubscriptionHookOptions<OnCreateUserSubscription>
) => useSubscription<OnCreateUserSubscription>(gql(onCreateUser), options);

The generated hooks are utilizing the following Apollo hooks

queries: { useQuery, useLazyQuery} from "@apollo/client"
mutations: { useMutation } from "@apollo/client"
subscriptions: { useSubscription } from "@apollo/client"

Setup

Install the plugin globally and add it to Amplify cli

yarn global add amplify-graphql-apollo-hooks-generator
amplify plugin add amplify-graphql-apollo-hooks-generator

Add apolloHooksPath to .graphqlconfig.yml of your Amplify project

projects:
  chat:
    schemaPath: amplify/backend/api/chat/build/schema.graphql
    includes:
      - src/graphql/statements/*.ts
    excludes:
      - amplify/**
    extensions:
      amplify:
        maxDepth: 2
        codeGenTarget: typescript
        generatedFileName: src/@types/graphql.ts
        docsFilePath: src/graphql/statements
        apolloHooksPath: src/graphql/hooks
extensions:
  amplify:
    version: 3

Add @apollo/client and graphql-tag as dependencies in your project, as the generated hooks utilize those

yarn add @apollo/client graphql-tag

Usage

After pushing the API and generating the GraphQL statements and types - run amplify apollo-hooks generate to generate the React Apollo hooks

amplify push api
amplify codegen
amplify apollo-hooks generate

Check out your apolloHooksPath for the results

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.