A button that handles Promises for your React app.
- Install by executing 
npm install @wojtekmaj/react-async-buttonoryarn add @wojtekmaj/react-async-button. - Use by adding 
import AsyncButton from '@wojtekmaj/react-async-button'and passingpendingConfig,successConfig. 
Your project needs to use React 16.8 or later.
React-Async-Button is also compatible with React Native.
Add React-Async-Button to your project by executing npm install @wojtekmaj/react-async-button or yarn add @wojtekmaj/react-async-button.
Here's an example of basic usage:
import React from 'react';
import AsyncButton from '@wojtekmaj/react-async-button';
const pendingConfig = {
  children: 'Loading…',
  disabled: true,
};
const successConfig = {
  children: 'Done',
};
const errorConfig = {
  children: 'Try again',
};
function MyComponent() {
  async function onClick(event) {
    // Do some async stuff
  }
  return (
    <AsyncButton
      onClick={onClick}
      pendingConfig={pendingConfig}
      successConfig={successConfig}
      errorConfig={errorConfig}
    >
      Do async stuff
    </AsyncButton>
  );
}Renders a button.
| Prop name | Description | Default value | Example values | 
|---|---|---|---|
| as | Component to render button with. | "button" | 
  | 
| errorConfig | Props to override default props with when onClick async function throws. | 
{} | 
{ children: 'Try again' } | 
| onClick | A function, a function returning a Promise, or an async function. | n/a | |
| pendingConfig | Props to override default props when button has been clicked but onClick function did not yet resolve. | 
{} | 
{ children: 'Loading…' } | 
| resetTimeout | Time in milliseconds after which AsyncButton should stop using errorConfig / successConfig overrides. | 
2000 | 
5000 | 
| successConfig | Props to override default props with when onClick async function resolves. | 
{} | 
{ children: 'Done' } | 
…and everything else a normal <button> would accept!
For accessibility purposes, we recommend setting aria-live="polite" and aria-atomic="true" props so that button label changes are announced to the user using assitive technologies.
The MIT License.
       
     | 
    
      Wojciech Maj kontakt@wojtekmaj.pl https://wojtekmaj.pl  | 
  
