lokka-hoc v0.3.11
lokka-hoc
High order component for Lokka GraphQL client
Warning
This package in development. Not all features from Lokka\GraphQL are supported.
Current features:
- query
- query with variables
- mutate
- mutate with variables
How to install
npm i lokka-hoc -SHow to use
/*
* Import dependencies
*/
import { Lokka } from 'lokka';
import { Transport } from 'lokka-transport-http';
import { lokkifyFactory } from 'lokka-hoc';
/*
* Setup Lokka client
*/
const client = new Lokka({
transport: new Transport('<your-graphql-server-url>')
});
/*
* Create `lokkify` connect function
* this could be done once and you can export `lokkify`
*/
// React by default
const lokkify = lokkifyFactory(client);
// or React explicitly (if you don't have it in global)
const lokkify = lokkifyFactory(client, React);
// or preact explicitly (if you don't have it in global)
const lokkify = lokkifyFactory(client, preact);
/*
* Define your component
*/
function App(props) {
return (
<div>
{
props.loading
? 'Loading'
: [
props.errors && props.errors.map(err => <h3>{err.message}</h3>),
props.data && <h3>Data: {props.data}</h3>
]
}
</div>
);
}
/*
* Connect component and query using `lokkify`
*/
export default lokkify(App, /* GraphQL */`{
posts {
id,
title,
content
}
}`);API
lokkifyFactory
With this function you create connect function which will be able to do querying and rendering
lokkifyFactory(<Lokka client>, [React || preact]) it will return lokkify function
lokkify
lokkify is used to connect your component and graphql.
lokkify(App, query, mutations) where
Appcomponent you want to connectquerystring representing your main graphql query or a function which receives props from parent component and returns a string:
lokkify(App, (props) => `{
test(limit: "${props.limit}")
}`, mutations)mutationsobject where key is a name for mutation and value is graphql mutation string.
this.props.loading
boolean value for current query state
this.props.data
any result of main query
this.props.errors
array all errors occurred during the query
this.props.refetch(vars)
function to refetch main query with optional vars
this.props.mutate(name, vars)
function to mutation with name (name is a key from lokkify third argument object) and vars. Returns a Promise
Motivation
I like the idea of simplicity and modularity of lokka. But it required a lot of boilerplate code. I was also inspired by simplicity of react-apollo. Unfortunately it doesn't simple to make it work with preact or any other react-like libraries.
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago