0.2.1 • Published 4 years ago

@lxsmnsyc/dendro-react v0.2.1

Weekly downloads
-
License
MIT
Repository
github
Last release
4 years ago

@lxsmnsyc/dendro-react

React bindings for @lxsmnsyc/dendro

NPM

Install

npm install @lxsmnsyc/dendro-react
yarn add @lxsmnsyc/dendro-react

Usage

useDendroValue

Reactively update component whenever a Dendro instance emits a new value.

import dendro from '@lxsmnsyc/dendro';
import { useDendroValue } from '@lxsmnsyc/dendro-react';

const counter = dendro(() => 0);

// ...
const count = useDendroValue(counter);

return (
  <h1>Count: {count}</h1>
);

Dendro Resource

Dendro Resources allows Promise-emitting Dendro instances to Result-emitting Dendro instances.

import { createDendroResource } from '@lxsmnsyc/dendro-react;

const userData = dendro(() => fetch('/api/user'));

const userResource = createDendroResource(userData);

const value = userResource.read(); // { status: 'pending' }

useDendroResource

function UserDetails() {
  const { status, value } = useDendroResource(userResource);

  if (status === 'pending') {
    return <Loading />;
  }
  if (status === 'failure') {
    return <ErrorMessage reason={value} />;
  }
  return (
    <h1>Name: {value.name}</h1>
  );
}

useDendroResource also accepts a second parameter for turning on Suspense mode.

function UserDetails() {
  const { value } = useDendroResource(userResource, true);

  return (
    <h1>Name: {value.name}</h1>
  );
}

function Profile() {
  return (
    <Suspense fallback={<Loading />}>
      <UserDetails />
    </Suspense>
  );
}

License

MIT © lxsmnsyc

0.2.1

4 years ago

0.2.0

4 years ago