![🛌🎣 Rest hooks](https://github.com/data-client/rest-hooks/raw/HEAD/packages/rest-hooks/rest_hooks_logo_and_text.svg?sanitize=true)
![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)
Dynamic data at scale. Performance, consistency, typing for REST, proto, GraphQL, websockets and more.
Simple TypeScript definition
class Article extends Entity {
readonly id: string = '';
readonly title: string = '';
readonly body: string = '';
pk() { return this.id; }
}
const ArticleDetail = new Endpoint(
({ id }: { id: string }) => fetch(`http://test.com/articles/${id}`)).then(res => res.json()),
{ schema: Article },
}
One line data hookup
const article = useResource(ArticleDetail, { id });
return (
<>
<h2>{article.title}</h2>
<p>{article.body}</p>
</>
);
Mutation
const update = useFetcher(ArticleDetail);
return <ArticleForm onSubmit={data => update({ id }, data)} />;
And subscriptions
const price = useResource(PriceDetail, { symbol });
useSubscription(PriceDetail, { symbol });+
return price.value;
...all typed ...fast ...and consistent
For the small price of 7kb gziped. 🏁Get started now
Features
Special thanks
Thanks to @0xcaff, @melissafzhang
and @alexiswolfish for their valuable feedback.