Package Exports
- rest-hooks
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (rest-hooks) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Making dynamic sites performant, scalable, simple to build with any API design.
Simple TypeScript definition
class ArticleResource extends Resource {
readonly id: number | undefined = undefined;
readonly title: string = '';
readonly body: string = '';
pk() { return this.id; }
static urlRoot = '/articles/';
}One line data hookup
const article = useResource(ArticleResource.detailShape(), { id });
return (
<>
<h2>{article.title}</h2>
<p>{article.body}</p>
</>
);Mutation
const update = useFetcher(ArticleResource.updateShape());
return <ArticleForm onSubmit={data => update({ id }, data)} />;And subscriptions
const price = useResource(PriceResource.detailShape(), { symbol });
useSubscription(PriceResource.detailShape(), { symbol });
return price.value;...all typed ...fast ...and consistent
For the small price of 7kb gziped. ๐Get started now
Features
-
Strong Typescript types
- ๐ React Suspense support
- โ๏ธ React Concurrent mode compatible
- ๐ฃ Simple declarative API
- ๐ฐ Normalized response configurable caching
- ๐ฅ Tiny bundle footprint
- ๐ Automatic overfetching elimination
- โจ Optimistic updates
- ๐ง Flexible to fit any API design (one size fits all)
- ๐ณ Tree-shakable (only use what you need)
- ๐ Subscriptions
- โป๏ธ Optional redux integration
- ๐ Storybook mocking
- ๐ฑ React Native support
- ๐ฏ Pluggable garbage collection policy
Special thanks
Thanks to @0xcaff, @melissafzhang and @alexiswolfish for their valuable feedback.