@lytrax/async-reactor
Version:
Render async Stateless Functional Components
87 lines (62 loc) • 1.96 kB
Markdown
> Render async Stateless Functional Components
This is a form to update all dependencies and particular, React 17 and Babel 7.
Test are not working, need lot of refactoring and probably change to Jest.
```shell
npm install --save async-reactor
```
```js
asyncReactor(component: Function, loader?: Component, error?: Component): Component
```
| name | type | description |
|--------------------|------------------|-------------------------------------------------|
| component | Function (async) | The `async` component you want to render |
| loader (optionnal) | Component | Will be shown until the first component renders |
| error (optionnal) | Component | Will be shown when an error occurred |
The returned value is a regular `Component`.
### Examples
This examples are exporting a regular React component.
You can integrate it into an existing application or render it on the page.
See more examples [here](https://github.com/xtuc/async-reactor/tree/master/examples)
#### Using code splitting
```js
import React from 'react'
import {asyncReactor} from 'async-reactor';
function Loader() {
return (
<b>Loading ...</b>
);
}
async function Time() {
const moment = await import('moment');
const time = moment();
return (
<div>
{time.format('MM-DD-YYYY')}
</div>
);
}
export default asyncReactor(Time, Loader);
```
```js
import React from 'react';
import {asyncReactor} from 'async-reactor';
function Loader() {
return (
<h2>Loading ...</h2>
);
}
async function AsyncPosts() {
const data = await fetch('https://jsonplaceholder.typicode.com/posts');
const posts = await data.json();
return (
<ul>
{posts.map((x) => <li key={x.id}>{x.title}</li>)}
</ul>
);
}
export default asyncReactor(AsyncPosts, Loader);
```