Stencil-Apollo is a collection of web components built using Stencil.
Release Blog Post: Stencil-Apollo - Stencil meets GraphQL
You can start using it in your existing project like its sibling React-Apollo;
Install it using npm or yarn;
$ yarn add stencil-apolloor
$ npm i stencil-apolloand don't forget to install other necessary dependencies if you don't have them.
$ yarn add graphql @types/graphql graphql-tag apollo-boostAdd esnext.asynciterable to compilerOptions.lib field in tsconfig.json to make TypeScript allow GraphQL to use AsyncIterator.
{
...
"compilerOptions": {
"lib": ["dom", "es2017", "esnext.asynciterable"],
},
...
}
Then add stencil-apollo to your global file which is src/global/app.ts by default or your root component file;
import 'stencil-apollo';Finally you can provide your ApolloClient instance on your root component, then use components everywhere in your project;
<apollo-provider client={new ApolloClient(...)}>
...
</apollo-provider> <apollo-query query={ gql`query { foo }` } renderer={
({ data, loading }) => {
if (loading) {
return 'Loading';
}
return <p>Foo: {data.foo}</p>;
}
} />or you can use functional components like React-Apollo
import { Query } from 'stencil-apollo';
<Query query={ gql`query { foo }` }>
{
({ data, loading }) => {
if (loading) {
return 'Loading';
}
return <p>Foo: {data.foo}</p>;
}
}
</Query>