Declarative promise handling in React.
npm i react-promise-renderer --save
Then, use it as usual:
// using ES6 modules
import createPromiseRenderer from 'react-promise-renderer'
// using CommonJS modules
var createPromiseRenderer = require('react-promise-renderer').createPromiseRenderer
The UMD build is also available on unpkg:
<script src="https://unpkg.com/react-promise-renderer"></script>
The package is avalable on window.ReactPromiseRenderer
import createPromiseRenderer from 'react-promise-renderer'
const PromiseRenderer = createPromiseRenderer(value => Promise.resolve(42))
const Example = () => (
<PromiseRenderer>
<PromiseRenderer.Running>
<div>Loading...</div>
</PromiseRenderer.Running>
<PromiseRenderer.Result>{result => <div>The result of function call is {result}</div>}</PromiseRenderer.Result>
<PromiseRenderer.Rejected>{reason => <div>Error: {reason}</div>}</PromiseRenderer.Rejected>
</PromiseRenderer>
)
import createPromiseRenderer from 'react-promise-renderer'
const PromiseRenderer = createPromiseRenderer(value => Promise.resolve(42))
const Example = () => (
<PromiseRenderer>
{({ running, result, rejected, hasResult, rejectReason }) => (
<div>
{running && <div>Loading...</div>}
{hasResult && <div>The result of function call is {result}</div>}
{rejected && <div>Error: {rejectReason}</div>}
</div>
)}
</PromiseRenderer>
)
Great thanks to @kitos and @ventrz for their invaluable help, support and bright ideas!